我尝试运行函数 exec() 来执行另一个脚本 php。 它适用于 Windows,但不适用于 Linux 服务器。
window
$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";
两个脚本都在同一个文件夹中,当在 Windows 上运行时,我得到一个包含字符串“Test work”的数组,但是当我在 Linux 服务器上运行 Linux 命令时,却没有
编辑
我尝试更改命令,正如@Robert 所建议的那样:
$str = exec("php test_file.php",$output);
echo $str;
var_dump($output);
但这返回了这个:
array(1147) { [0]=> string(24) "X-Powered-By: PHP/7.0.16" ...
最佳答案
确保您使用正确的 php 二进制文件和要执行的文件的路径。
例子:
exec('/path/to/php -f /path/to/file.php', $output);
另外,如果你想给它传递参数,你可以在php文件后面加上参数,然后从$argv
数组中读取。 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等
关于php exec() 在 Linux 服务器上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416451/