我有一个名为 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() 函数,但效果不佳。
编辑:
我无法在 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 给我一些提示帮助。
最佳答案
指定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);
?>
关于php - 如何从浏览器的命令行中执行外部 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857075/