用php运行一个外部程序
我对php有问题!我想用php运行一个外部程序。这个程序在命令行和Linux平台上工作。所以它一定很好。但我尝试更多的时间,我不能运行它。所以怎么了! 这是该程序的链接:http://www.lalescu.ro/liviu/fet/ ,这是其在命令行正常工作的命令,而不是在PHP的情况下:用php运行一个外部程序
./fet --inputfile=Hopwood.fet --outputdir=out
,这是PHP代码:
<?php
`./fet --inputfile=Hopwood.fet --outputdir=out`
?>
我希望能解决这个问题。 在此先感谢..
更新我上传可执行程序和Hopwood.fet文件你试试吧.. 这是链接: http://rapidshare.com/files/454756427/fet.tar.gz
它看起来像你正在运行FET从本地安装(基于您发布的./fet命令)。
您需要将您的fet安装位置添加到您的PATH变量中。
在Linux系统上,编辑您的〜/ .bashrc,并添加以下内容:
export PATH=$PATH:/home/mkotwd/fet
如果/家庭/ mkotwd/FET是你已经安装了FET。您也可以创建一个目录〜/ bin,将它添加到您的PATH中(如上所述),并创建一个指向您的fet可执行文件的符号链接〜/ bin/fet。这是推荐的解决方案,因为您不必在PATH中添加将来可能要运行的每个本地命令的目录,只需在〜/ bin中为每个可执行文件创建符号链接
您可能还想要检查出http://php.net/manual/en/function.exec.php的调用细节,安全注意事项以及由使用该命令执行各种任务的用户发布的其他提示。
是我尝试所有这一切,但不是工作,执行命令返回0 int如果完成, fyi函数返回1的值! – mkotwd 2011-03-28 09:39:52
尝试在全路径做:
/path/to/installed/fet --inputfile=/path/to/your/Hopwood.fet --outputdir=/path/to/your/out
所以你最终会执行:
exec("/path/to/installed/fet --inputfile=/path/to/your/Hopwood.fet --outputdir=/path/to/your/out");
此外,确保运行过程中有写信给你/path/to/your/out
能力UPDATE
为了让事情更清晰,请尝试运行此命令:
exec("/path/to/installed/fet --inputfile=/path/to/your/Hopwood.fet --outputdir=/path/to/your/out 2> /tmp/fet.error.log", $output, $status);
echo "status: " . $status;
echo "output: " . implode("\n", $output);
if(file_exists("/tmp/fet.error.log"))
{
echo "Error Log: " . file_get_contents("/tmp/fet.error.log");
}
UPDATE
为@mkotwd告诉另一个答案(试图调试代码后,上面)。问题是因为fet
试图访问X服务器。所以,作为@mkotwd答案是解决方案的补充:
export DISPLAY=:0
,并成为命令:
exec("export DISPLAY=:0 && fet --inputfile=Hopwood.fet --outputdir=out");
它可以帮助我们,如果你格式化你的代码,所以我们可以看到你试图运行什么。 – 2011-03-28 09:25:52
你确定你在正确的子目录下运行./fet吗? – stillstanding 2011-03-28 09:28:01
好,我现在去编辑我的问题。 – mkotwd 2011-03-28 09:28:27