我正在尝试从 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
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/