我試圖在PHP腳本中執行shell命令,但exec返回126代碼,這意味着「調用的命令無法執行」(權限問題或命令不是可執行文件)。但最有趣的是,如果我在cli下運行相同的php腳本,它效果很好。它出什麼問題了?exec -PHP return_val是126
也許有一些環境問題?因爲當我在Apache下運行它時,如果我不使用絕對路徑來執行可執行文件(在cli下它工作良好並返回0,即使我僅使用文件名),它將返回127代碼。該文件存儲在/ usr/local/bin文件夾。
UPDATE:
至於問意見,我告訴例如我的代碼,但是有沒有什麼特別的。
這件工作在CLI罰款,但在Apache不工作($retval
將等於127):
$output = array();
$retval = 0;
exec("myexecutablefile /full/path/to/someotherfile.js", $output, $retval);
echo implode(PHP_EOL, $output);
這段代碼將返回$retval = 126
$output = array();
$retval = 0;
exec("/usr/local/bin/myexecutablefile /full/path/to/someotherfile.js", $output, $retval);
echo implode(PHP_EOL, $output);
代碼示例?你在做什麼? – Neal 2012-07-16 20:07:50
exec和你的用戶在命令行上的用戶並不相同,因此不同的權限。 – 2012-07-16 20:09:10
在Apache下運行它與您在命令行中使用的環境完全不同。不同的用戶ID,不同的環境變量(例如路徑) – 2012-07-16 20:11:18