php exec() 在 Linux 服务器上无法正常工作

标签 php linux apache

我尝试运行函数 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/

相关文章:

python - Apache 下的 webapp2(= 没有 Google App Engine)

php - 使用php在后台执行shell脚本

php - 中止和恢复 Symfony 控制台命令

php - 不允许加载本地资源 (windows)

java - 从 Dovecot 邮件服务器删除电子邮件

linux - 在 bash 中查找字符串并将其分配给变量

php - 为什么我不应该使用 PHP 的 mail() 函数?

java - 服务器 java 应用程序经常 fork

php - Apache 虚拟服务器和使用 ip 地址的硬编码 mysql 连接器

security - apache 的密码文件放在哪里?