我有一个名为external.php
的外部php脚本,其中包含:
<?php
echo 'External Output';
?>
当我使用命令在命令行上运行它时:
php external.php
我输出为
External Output
但是当我从我的浏览器的名为index.php
的php文件中执行相同的脚本时,该文件具有以下代码:
<?php
$exe=exec('php external.php',$out,$ret);
print_r($out);
?>
然后我没有输出。
当我将其修改为:
<?php
$exe=exec('php external.php 2>&1',$out,$ret);
print_r($out);
?>
然后我得到了这个输出:
php: /opt/lampp/lib/libxml2.so.2: version `LIBXML2_2.9.0' not found (required by php)
我的问题是,如何执行&#34; external.php &#34;在index.php的命令行中输入文件并在我的浏览器上获取输出(即在index.php上)?我也尝试过system()函数,它也不起作用。
修改
我不能include
index.php中的external.php,因为external.php可能需要很长时间才能执行(超过10个小时)。
修改#2 解决了它,给PHP的完整路径解决了问题。
以下是一个例子:
<?php
$exe=exec('full/path/to/php /full/path/to/external.php',$out,$ret);
print_r($out);
?>
谢谢Oleg和Scopey给了我一些提示帮助。
答案 0 :(得分:1)
指定external.php的完整路径:
<?php
$exe=exec('php /full/path/to/external.php',$out,$ret);
print_r($out);
?>
尝试在命令行中指定php的完整路径并检查它是否有效:
$/usr/bin/php "/full/path/to/external.php"
如果可行,请在您的php文件中尝试:
<?php
$exe=exec('/usr/bin/php /full/path/to/external.php',$out,$ret);
print_r($out);
?>
答案 1 :(得分:0)
尝试从命令行运行phpinfo()
。通常,PHP的安装使用不同的PHP.ini来进行CLI使用。运行phpinfo()
将显示正在使用的ini文件的位置。似乎这个ini可能没有为您的安装正确配置(作为猜测)