如何从浏览器在命令行中执行外部PHP脚本

时间:2014-07-21 02:51:00

标签: php linux

我有一个名为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给了我一些提示帮助。

2 个答案:

答案 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可能没有为您的安装正确配置(作为猜测)