使用PHP中的system()执行程序时出错:在抛出';标准::逻辑错误';

使用PHP中的system()执行程序时出错:在抛出';标准::逻辑错误';,php,apache,exception,Php,Apache,Exception,下面是我的index.php中的一段代码 <?php /*cmd is a program wittern by another people that I do not know much*/ $cmd="absolutePath/cmd"; $ret=0; system($cmd,$ret); ?> <p id="return"><?php echo $ret?></p> 如果我只是这样在命令行中执行程序:$absolutePath/c

下面是我的index.php中的一段代码

<?php
/*cmd is a program wittern by another people that I do not know much*/
$cmd="absolutePath/cmd";
$ret=0;
system($cmd,$ret);
?>
<p id="return"><?php echo $ret?></p>

如果我只是这样在命令行中执行程序:
$absolutePath/cmd
然后
echo$?
我得到0,这是正确的

如果我像这样在命令行中执行index.php:
php-f index.php
我在输出中得到了正确的

0

但是,如果我在浏览器(chrome和IE)中打开网页, 我得到了

134

和错误消息:

在抛出“std::logic_error”实例后调用terminate
what():基本\u字符串::\u S\u构造null无效中止

我在stackoverflow上发现的问题与此相同: 而抛出的异常则不同。

基于,系统(命令,return\u var):

如果存在return\u var参数,则已执行命令的返回状态将写入该变量。

因此,返回状态为134。128之后的退出状态,即128+n,其中n是一个小的正数,通常意味着程序在信号“n”的情况下崩溃。所以,这是信号6。根据,信号6表示“中止信号”


所以,我猜,外部程序
$cmd
可能不是从浏览器运行的。

你在抽什么?您的标记与问题无关…抱歉,它们是我最后一个问题的标记…原来原因是www数据用户没有env变量$HOME。