我正在尝试制作一些 php 脚本,这些脚本将在其他系统调用命令(如 top 和其他自定义脚本)中运行。你可以看到下面的代码非常简单。我们在下面的 php 中遇到的问题是,当我从 linux 提示符调用 php 时,如:
#php checkTOP.php
它将在屏幕上返回 top -n 1 输出,没有问题。
当我使用 http://url.com/checkTOP.php 从网络服务器运行脚本时它只返回以下内容:
program:/usr/bin/top -n 1 ver1 = retval = 1 Returned not zero
这是我的调试语句。
<?php
$program="/usr/bin/top -n 1";
echo "program:{$program}<br /> \n";
$ver1=system($program,$retval);
echo "ver1 = {$ver1}<br />\n";
echo "retval = {$retval}<br /> \n";
if($retval==0)
{
echo "Returned 0<br />\n";
}
else
{
echo "Returned not zero <br />\n";
}
die;
?>
变化 1:还有一件事。所有权限均已正确设置/usr/bin/top 设置为 root:apache 和 rxrxrx 以及所有目录/usr/bin。
最佳答案
奥莱打败了我;我使用了输出缓冲,所以我会发布它:
<code><?PHP</code><br/>
ob_start();<br/>
$program="/usr/bin/top -n 1 -b";<br/>
passthru($program);<br/>
$t=ob_get_contents();<br/>
ob_end_clean();<br/>
<code>echo "<PRE>$t</PRE>";</code>
<code>?></code>
关于php - 为什么下面的 php 代码没有返回预期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748488/