【发布时间】:2011-10-17 04:14:51
【问题描述】:
我有三个 php 脚本。一,我从初始化脚本开始。第二个由第一个本身启动,然后第二个使用shell_exec 通过定期向第三个脚本传递各种参数来获取第三个脚本的输出。
但这并没有发生。当我var_dumpshell_exec 的输出时,在第二个脚本中,我得到NULL。但是当我在第二个脚本中打印shell_exec 中使用的实际命令并尝试将其输入到控制台时,它工作得很好!
我从启动初始化脚本的同一用户的控制台尝试了命令。
这可能是权限问题。但我有适当的权限设置,即
- +x 用于第三个脚本
- 第三个脚本(实际上这三个脚本都是)由我使用控制台的同一用户和组拥有
注意 - 我尝试使用 shebang 启动第三个脚本,以及删除 shebang 并在脚本路径前添加 php。使用 root 一切运行良好。
另外,请注意,第一个脚本将第二个脚本的输出重定向到日志文件(这是我发现第三个脚本在 shell_exec 上返回 NULL)
更新:第二个脚本的代码使用shell_exec
$command = "/var/data/user-data.php '{$user}' '{$request['token']}' '{$request['secret']}'";
$data = json_decode( shell_exec( $command ), true );
我尝试打印$command 和var_dump( shell_exec( $command ) )。前者返回预期值(参数),后者返回 NULL
【问题讨论】:
-
发布您使用的确切代码