如何从php脚本获取php解释器的完整路径(无命令行访问).
我需要做的是:
$foo = "/usr/bin/php";
echo $foo;
Run Code Online (Sandbox Code Playgroud)
但我需要首先获得路径,以便将其分配给foo.
如果你有一个适用于Windows和nix的解决方案甚至更好,但如果没有,nix就可以了.
在你问之前,
问题是使用它输出的任何东西都不起作用.例如,PHP_BINDIR将输出/ usr/bin,但使用/ usr/bin/php将无济于事.完整的代码是:
exec("php-cli $path_to_file > /dev/null 2>/dev/null &");
Run Code Online (Sandbox Code Playgroud)
但即使使用/ usr/bin/php-cli也不行,即使它告诉我.我必须使用:
exec("/opt/php52/bin/php-cli $path_to_file > /dev/null 2>/dev/null &");
Run Code Online (Sandbox Code Playgroud)
例如,对于这个特定的主机.
我需要在PHP脚本中回显MySQL版本(在下载插件之前,它是用户的服务器需求检查页面),而不必将它们连接到他们的数据库.
将此脚本上载到其服务器并在浏览器中打开它.我可以要求他们运行php信息,但我需要的只是Mysql版本,并在脚本中格式化其余的结果.
我该怎么办呢?
我有一个脚本,在几个目录中执行一个文件,如下所示:
exec("php-cli $file_path > /dev/null 2>/dev/null &"); //php command-line
Run Code Online (Sandbox Code Playgroud)
这适用于大多数主机,但有些主机不喜欢它并且它不运行,不会产生任何错误.
对于失败的主机,我使用
exec("php $file_path > /dev/null 2>/dev/null &"); //notice the -cli is gone
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
$ file_path是正在执行的文件的完整路径/home/blah/path/blah.php
我如何制作这种制服,以便它适用于所有服务器(至少unix)
**编辑**
好吧,我这样做,它(很可能)不是正确的方式,但它的工作原理.
而不是只使用php-cli或php,我使用两者,所以如果一个失败,另一个经历.要么php作为cgi或cli运行,其中一个会捕获,并且因为没有输出,所以也没有错误.
exec("php-cli $file_path > /dev/null 2>/dev/null &");
exec("php $file_path > /dev/null 2>/dev/null &");
Run Code Online (Sandbox Code Playgroud)
除非您知道更好的解决方案,否则请告诉我.感谢你的帮助.