[英]PHP on Ubuntu AWS Server: POPEN fails with “sh: <command>: not found”
我将当前网站从Red Hat共享服务器移至Amazon AWS。 当我移动工作代码时,我的popen调用开始出现错误。
错误是: sh: 1: <command>: not found
我在5年前发现了类似的问题,但从来没有一个好的答案。 popen失败,并显示“ sh:<command>:not found”
我在ubuntu 14.04笔记本电脑上使用XAMPP作为本地测试平台,但这里并没有出现问题,但是在我的AWS实例上确实存在。 在实例上将ubuntu 14.04lts与php5和apache2一起使用。
我怀疑这可能是PHP设置或路径问题,但是我尝试的所有操作均失败了,有什么建议吗?
output = shell_exec('echo abc');
工作正常。
这是更多信息:我的代码:
if (file_exists(SitePATH."/solver/dkcube")){
//echo "Executable is there <br />";
error_reporting(E_ALL);
$handle = popen("$runvariable 2>&1","r");
echo "Line 1: '$handle'; ".gettype($handle). "<br />";
$contents = stream_get_contents($handle);
echo "Line 2: $contents"; pclose($handle);
runvariable基本上是file_exists中的dkcube,带有一些传递变量。 第2行的回波是
“第2行:sh:1:/ var / www / html / solver / dkcube:未找到”
希望能给您更多的信息。
我尝试了sudo -H -u php_user sh -c 'content of runvariable here'
,它返回了相同的错误: sh: 1: /var/www/html/solver/dkcube: not found
感谢JF Sebastian的事实调查问题,他给了我解决我的问题所需的花絮。 使用他的sudo -H -u php_user sh -c 'content of runvariable here'
问题,我确定这是一个ubuntu问题,而不是php问题。
我的问题的根本原因是我在64位操作系统上运行了32位可执行文件,但没有为我的可执行文件安装正确的库。
首先,我必须将sh从破折号更改为bash,如下所示: sh shell中找不到源命令
然后,我必须按照此处所述安装正确的库: https : //unix.stackexchange.com/questions/75054/ldd-tells-me-my-app-is-not-a-dynamic-executable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.