【发布时间】:2014-12-07 12:52:21
【问题描述】:
我正在尝试从 php 文件执行 php 脚本,但似乎我无法获得 php.exe 的正确 bin 路径。据我所知,它没有做任何事情。让我们假设 service-oauth.php 是一个简单的 echo。
EDIT3:
我使用php-cli 而不是php 或php bin 路径修复了它,我必须承认我之前尝试过这个,但是当我尝试这个(我尝试的第一件事之一)时似乎有其他东西关闭了。 Keith 在Can't execute PHP script using PHP exec 中提供的答案,所以它最终成为重复的:S,感谢评论者的帮助。
EDIT2: 我尝试按照@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)上测试了这个脚本并且它可以工作(即使我不得不使用硬编码的路径,因为我没有得到正确的路径),但我正在我的生产服务器上测试(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,并且我已经测试了 excec 函数并且它可以工作,但在这种情况下不是。还尝试在被调用脚本中使用 shebang。 这可能是我不知道的简单事情,但我已经花了很多时间搜索和测试,但到目前为止什么都没有。任何帮助表示赞赏。
编辑:
在 bin 文件夹上使用 scandir 显示 scandir("/usr/bin/")
Array(
...
[632] => php
[633] => php-cgi
[634] => php-cli
...
)
使用 ini_get('safe_mode') 测试是否处于安全模式,但似乎关闭。
【问题讨论】:
-
在大多数情况下,您只需要
$output = exec("php $fileToExc"); -
对不起,我忘了说这是我尝试的第一件事,但谢谢=S
-
从那里开始有错误? “php 文件名”在命令行上工作吗?
-
没有错误,只是没有输出
-
您是否检查过安全模式已关闭和/或在您的 php.ini 中启用了 exec? cyberciti.biz/faq/…