apache を介して Solaris で Phabricator を実行しようとしています。Web サイトは機能していますが、すべての cli スクリプトが機能していません。たとえば、phd
.
manage-daemons.php
最初の問題は、呼び出し元のスクリプトに引数を渡していないことです。ファイルを見るとphd
、これは私を驚かせません:
$> cat phd
../scripts/daemon/manage_daemons.php
ここで、デフォルトのシェルがであるとするとbash
、これは引数をパススルーしません。これを行うために、スクリプトを次のように変更しました。
#! /bin/bash
../scripts/daemon/manage_daemons.php $*
これは引数をパススルーするようになりましたが、相対パスを介して必要なtransativeスクリプトを見つけることができなくなりました:
./phd start
Preparing to launch daemons.
NOTE: Logs will appear in '/var/tmp/phd/log/daemons.log'.
Launching daemon "PhabricatorRepositoryPullLocalDaemon".
[2014-05-09 19:29:59] EXCEPTION: (CommandException) Command failed with error #127!
COMMAND
exec ./phd-daemon 'PhabricatorRepositoryPullLocalDaemon' --daemonize --log='/var/tmp/phd/log/daemons.log' --phd='/var/tmp/phd/pid'
STDOUT
(empty)
STDERR
./phd-daemon: line 1: launch_daemon.php: not found
at [/XXX/XXX/libphutil/src/future/exec/ExecFuture.php:398]
#0 ExecFuture::resolvex() called at [/XXX/XXX/phabricator/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php:167]
#1 PhabricatorDaemonManagementWorkflow::launchDaemon(PhabricatorRepositoryPullLocalDaemon, Array , false) called at [/XXX/XXX/phabricator/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php:246]
#2 PhabricatorDaemonManagementWorkflow::executeStartCommand() called at [/XXX/XXX/phabricator/src/applications/daemon/management/PhabricatorDaemonManagementStartWorkflow.php:18]
#3 PhabricatorDaemonManagementStartWorkflow::execute(Object PhutilArgumentParser) called at [/XXX/XXX/libphutil/src/parser/argument/PhutilArgumentParser.php:396]
#4 PhutilArgumentParser::parseWorkflowsFull(Array of size 9 starting with: { 0 => Object PhabricatorDaemonManagementListWorkflow }) called at [/XXX/XXX/libphutil/src/parser/argument/PhutilArgumentParser.php:292]
#5 PhutilArgumentParser::parseWorkflows(Array of size 9 starting with: { 0 => Object PhabricatorDaemonManagementListWorkflow }) called at [/XXX/XXX/phabricator/scripts/daemon/manage_daemons.php:30]
XXX
機密情報を漏らすため、パスを隠していることに注意してください。
明らかに、これらのスクリプトを変更するべきではありません。これは、いくつかの前提条件が正しく設定されていないことを示しています。
Phabricator が私のセットアップについて (大胆な) 推測をしていることは明らかです。でも、よく分からない…?