编辑-添加新的信息在顶部的能见度。www数据用户不能使用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包来生成pdfs,它运行得完美无缺,但我无法找到导致它现在失败的原因。
我一直使用/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'
( puphpeteer生成的初始命令)工作正常,并返回预期的结果"5.5.0"
,因此节点在那里,并且可执行,并且存在get-傀儡-版本脚本。
在排除故障后,我决定只测试exec,发现这对任何命令都不起作用。我尝试过只运行exec("date");
和exec("echo EXEC")
,它们也返回相同的退出代码127。
disable_functions ini设置为空(通过ini_get('disable_functions')
的空结果确认)。安全模式未启用(通过ini_get('safe_mode')
的假结果确认)。
如果有人有任何洞察力,为什么执政者根本就不会工作,那就太好了!
环境:
Ubuntu 18.04.4
PHP8.1
发布于 2022-04-19 17:22:29
所以经过进一步的调查..。我发现这确实是一个权限问题。我已经检查了该节点,/bin文件夹中的所有内容都具有适当的执行权限。
我错过的(也不确定它是如何更改的)是/bin文件夹本身没有适当的执行权限。加上这些马上就解决了我的问题。
https://stackoverflow.com/questions/71886521
复制相似问题