繁体   English   中英

Ubuntu AWS Server上的PHP:POPEN失败,并显示“ sh: <command> : 未找到”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM