2017-02-23 117 views
0

我嘗試運行函數exec()來執行另一個腳本php。 這是在Windows上的工作,但在Linux服務器dosen't。php exec()在Linux服務器上無法正常工作

的Windows

$str = exec("start /B php test_file.php",$output); 

Linux的

$str = exec("php test_file.php > /dev/null &",$output); 

test_file.php

echo "Test work"; 

兩個腳本AR E在同一個文件夾,在Windows上運行我得到與字符串數組「測試工作」,但是當我的Linux服務器上運行Linux的COMAND這麼想的

編輯

我嘗試改變COMAND作爲@Robert sugest:

$str = exec("php test_file.php",$output); 
echo $str; 
var_dump($output); 

但返回此:

array(1147) { [0]=> string(24) "X-Powered-By: PHP/7.0.16" ... 
+1

您正在將輸出重定向到/ dev/null爲什麼期望將結果返回給PHP? – apokryfos

+0

我需要返回到變量$輸出腳本的結果來進行驗證。命令應該如何? –

+1

然後你應該使用'$ str = exec(「php test_file.php」,$ output);'。添加'>/dev/null'會將輸出重定向到.. well'/ dev/null',所以'$ output'將保持爲空。你也可以在最後使用'&',這意味着命令將在後臺運行(除非你不是將輸出重定向到某處),exec()命令不會等待命令完成。 – Robert

回答

0

確保您使用正確的路徑到這兩個PHP斌ary和您要執行的文件。

例子:

exec('/path/to/php -f /path/to/file.php', $output); 

此外,如果你想傳遞參數給它,你可以將PHP文件後添加它們,並從陣列讀取它們。 php manual $argv

在你的情況,你可以這樣做:

exec('/path/to/php -f /path/to/file.php param1 param2 param3', $output); 

在您正在執行的PHP文件,你可以做一個

vardump($argv); 

這在我的例子包含4項,$argv[0]是名字$argv[1]具有param1的值,等等。

相關問題