【问题标题】:How to execute external PHP script in command line from your browser如何在浏览器的命令行中执行外部 PHP 脚本
【发布时间】: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 中的另一个...
  • 即使你想使用命令行,也要包含浏览器的文件。

标签: php linux


【解决方案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);
?>

【讨论】:

  • @CandiceWilliams - 奇怪。在我的答案中添加了另一个可能的修复。只是在这里猜测,因为我无法重现错误。
  • @Oleg 嗨,我有一个关于 SO 的帖子,你能看看这个吗? stackoverflow.com/questions/35331958/…
【解决方案2】:

尝试从命令行运行phpinfo()。 PHP 的安装通常使用不同的 PHP.ini 来进行 CLI 使用。运行phpinfo() 将显示正在使用的ini 文件的位置。似乎这个 ini 可能没有为您的安装正确配置(作为猜测)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2013-07-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多