【问题标题】:shell_exec(); not working properly in PHPshell_exec();在 PHP 中无法正常工作
【发布时间】:2012-07-23 03:27:26
【问题描述】:

我正在尝试通过 shell_exec(); 执行命令但它什么也没做。我知道 shell_exec();已启用,因为这些功能完美:

echo shell_exec('which php');
echo shell_exec('ls');

他们确实输出正确。

问题是当我想执行这样的事情时:

shell_exec("php file.php var1 var2 > /dev/null &");

它什么都不做,但是当我通过计算机上的终端运行它时,它确实有效。 我也尝试过使用这样的完整路径:

shell_exec("/usr/bin/php /full/path/file.php var1 var2 > /dev/null &");

它不起作用,但再次......如果我通过终端的计算机运行它,它会起作用。

php.ini 安全模式已关闭,并且上面没有禁用的功能,所以我不知道会发生什么。是的,我可以访问 SSH 并获得一个专用 IP。

【问题讨论】:

  • 预期的结果是什么? file.php 应该做什么?

标签: php shell command exec shell-exec


【解决方案1】:

尝试查看函数的返回码$return_var(函数的最后一个参数systemexec)。如果成功,它应该是0。如果是127,可能服务器上不允许使用命令行,或者您没有足够的权限从 PHP 脚本运行命令(这取决于执行脚本的用户/组)。否则函数只返回空的输出数组,就像没有发生好的或坏的事情一样。

不久前我遇到过类似的情况,ls 工作正常,而wget 总是失败。

【讨论】:

    【解决方案2】:

    您可能会遇到权限被拒绝错误,尤其是在您尝试将输出重定向到 /dev/null 时。可能想考虑一个 cron 作业,但我不确定您为什么要重定向输出并在后台运行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2021-08-16
      相关资源
      最近更新 更多