【问题标题】:It seems php exec is not waiting for execution似乎 php exec 没有等待执行
【发布时间】:2013-03-06 18:57:50
【问题描述】:

事情是这样的,

$file="myjpg.jpg";
$runme="/var/www/html/facedetect/facedetect ".$file;
$output=shell_exec($runme);
var_dump($output);

转弯

NULL

但实际上,通过 ssh 运行完全相同的命令需要一点时间才能完成,大约 15 秒,它确实会返回输出。

所以我认为 PHP 在完成之前没有等待并退出。

可以做些什么来解决这个问题? ini 中的任何特殊设置,等等。

或者在某处可能与 shell_exec 不发送 myjpg.jpg 作为可执行文件的参数有关的未配置配置。我对此一无所知。

【问题讨论】:

  • 执行命令的输出或 NULL 如果发生错误。所以有错误。

标签: php exec executable shell-exec


【解决方案1】:

shell_exec()在命令失败时返回NULL;即当它返回非零退出值时。

很可能是这种情况。

要调试,试试exec(),它总是返回一个值,它会返回错误。

我的直觉是运行 PHP(可能是 www-data)的用户无法访问 /var/www/html/facedetect/facedetect$file;

【讨论】:

  • 是的,我想可能是这样,例如,我如何以 shell_exec 作为 root 执行?我试过 exec ,是的,错误是 127 - 理论上假设是错误的路径,但你的理论听起来可能是解决方案,它与此相关,运行 php 的用户可能不是 root,我该如何配置所以 php 被淘汰了root 或者如果这不是一个好主意,如果你能告诉我,我应该去哪里
  • 用户是 apache,但是可执行文件本身的内容链接到许多其他文件,我想知道这些文件也需要用户 apache 的权限,这就是问题所在。我真的每天都更爱 Linux,它有数百个锁和解锁每个小时的时间,真是太棒了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
相关资源
最近更新 更多