【发布时间】:2014-07-21 02:50:59
【问题描述】:
我有一个名为 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)
我的问题是,如何在 index.php 的命令行中执行该“external.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 给我一些提示帮助。
【问题讨论】:
-
你为什么不直接
include()另一个php文件? -
因为我需要从命令行执行它,而不是在浏览器上执行它,因为它最多可以运行几天......
-
我不知道您为什么使用 exec 来运行 php 文件。使用 include 或 require。
-
@CandiceWilliams 您已经从命令行执行 index.php。您可以
include()index.php 中的另一个... -
即使你想使用命令行,也要包含浏览器的文件。