php - 在正在运行的 php 脚本中执行 php 脚本

标签 php linux exec

我正在尝试从 php 文件执行 php 脚本,但似乎无法获取 php.exe 的正确 bin 路径。据我所知,它没有做任何事情。让我们假设 service-oauth.php 是一个简单的 echo。

编辑3: 我使用 php-cli 而不是 php 或 php bin 路径修复了它,我必须承认我之前尝试过这个,但当我尝试这个时,似乎有其他东西关闭了(我尝试的第一件事之一)。 Keith 在 Can't execute PHP script using PHP exec 中提供的答案,所以它最终是重复的:S,感谢评论者的帮助。

编辑2: 我尝试按照 @Dagon 的建议直接从服务器控制台调用脚本,它可以工作,都使用 php env 变量和 bin 的 php 路径,很明显路径是正确的,但有些东西阻止获取输出或使用 php exec() 函数运行脚本

service-oauth.php

<?php echo "Hello there"; ?>

这是我的脚本:

   $basePath =  plugin_dir_path( __FILE__ ); # Wordpress function, asume it works.
   $fileToExc = $basePath . 'service-oauth.php';
   # PHP_BINDIR: /usr/local/bin
   # PHP_BINARY: /usr/bin/php
   # exec("which php") /usr/bin/php
   $phpPath = exec("which php");
   $output = exec("$phpPath $fileToExc");
   print_r($output);

stackoverflow 上有很多答案推荐我在代码中评论的这 3 个选项中的任何一个,但它们似乎都不起作用,不确定是路径还是其他不起作用。我已经在我的本地计算机(Windows)上测试了这个脚本并且它可以工作(尽管我必须使用硬编码的 bin 路径,因为我不想获得正确的路径),但我正在我的生产服务器(linux)上测试并且无法工作。

注意:让我明确一点,这不是重复的,我已经在这些帖子和许多其他帖子中尝试过以下答案,但它对我不起作用:

How to get path of the php binary on server where it is located

Can't execute PHP script using PHP exec

PHP exec to run a file

How to call shell script from another shell script?

Execute a PHP script from another PHP script

我还尝试在二进制文件(windows localmachine)末尾使用.exe,使用php-cli而不是php,并且我测试了execec函数并且它可以工作,但在这种情况下不行。还尝试在调用的脚本中使用 shebang。 这可能是我不知道的简单事情,但我花了很多时间搜索和测试,但到目前为止什么也没有。如有任何帮助,我们将不胜感激。

编辑:

在 bin 文件夹上使用 scandir 显示 scandir(“/usr/bin/”)

Array(
 ...
 [632] => php
 [633] => php-cgi
 [634] => php-cli
 ...
)

使用 ini_get('safe_mode') 测试是否处于安全模式,但似乎关闭。

最佳答案

我使用 php-cli 而不是 php 或 php bin 路径修复了它,我必须承认我之前尝试过这个,但当我尝试这个时,似乎有其他东西关闭了(我尝试的第一件事之一)。 Keith 在 Can't execute PHP script using PHP exec 中提供的答案,所以它最终是重复的:S,感谢评论者的帮助。 – Root

关于php - 在正在运行的 php 脚本中执行 php 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331830/

相关文章:

php - SQL 更新方法返回 JSONException

php - 在什么场景下使用json_encode()比使用serialize()更好?

php - PHP 中的查询结果为空,但是当我从 PHPMyAdmin 运行 SQL 查询时,它可以工作

c - 在用 fopen 打开的文件上执行 ftruncate

php - 我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?

php - MySQL:选择每对的最后一行

在运行时更改库加载顺序(如 LD_PRELOAD 但在执行期间)

linux - 使用 at 命令从终端自动启动 Firefox

sql - 在 SQL 中执行 EXEC 时使用字符串中的变量值

pipe - 使用 scanf 从管道读取失败