[英]Laravel Task schedule with python script “Exit Code: 127(Command not found)”
[英]Getting Exit Code 127 (Command not Found) from php exec()
编辑 - 在顶部添加新信息以提高可见性。 www-data 用户不能使用exec()
命令。 所有尝试都会返回 127 错误。
我设置了一个简单的脚本就是这样
<?php
$res = exec("echo EXEC", $res1, $res2);
var_dump($res);
var_dump($res1);
var_dump($res2);
?>
当通过应用程序(当然作为 www-data 运行)执行时,这将返回 127 错误代码。
通过此命令执行时,它会完美运行sudo -u root php testExec.php
通过此命令执行时,它再次返回 127 错误代码sudo -u www-data php testExec.php
原始问题
尝试在 php 中使用exec
命令时,我似乎只能得到错误代码 127。我正在尝试使用https://github.com/rialto-php/puphpeteer package 生成 pdf,它工作得很好但我找不到导致它现在失败的更改。
我一直在使用/usr/local/.nvm/versions/node/v14.2.0/bin/node
作为节点的路径,但我也尝试将它复制到这里/node/v16.14.2/bin
这样我就可以给出整个目录结构执行权限。 在任何一个/两个地方,节点由 www-data(php 运行的用户)所有,并具有执行权限 (755)。
从命令行运行'/node/v16.14.2/bin/node' '/var/www/html/vendor/nesk/puphpeteer/src/get-puppeteer-version.js'
生成的初始命令)有效很好并返回预期结果"5.5.0"
所以节点在那里并且可执行并且 get-puppeteer-version 脚本存在。
在排除故障后,我决定只测试 exec 并发现它对任何命令都不起作用。 我试过只运行exec("date");
和exec("echo EXEC")
并且它们也返回相同的退出代码 127。
disable_functions ini 设置为空(通过ini_get('disable_functions')
空结果确认)。 未启用安全模式(通过ini_get('safe_mode')
错误结果确认)。
如果有人对 exec 根本不起作用的原因有任何见解,那就太好了!
环境:
Ubuntu 18.04.4
PHP 8.1
于是进一步调查.. 我发现这确实是一个权限问题。 我仔细检查了该节点,/bin 文件夹中的所有内容都具有适当的执行权限。
我错过的(并且不确定它是如何改变的)是 /bin 文件夹本身没有适当的执行权限。 添加那些立即解决了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.