我目前正在为OS X上的Sublime Text 2开发一些插件,我想让它们跨平台,这意味着我必须找出是否安装了php.exe
。
现在我在Python中调用/usr/bin/php
,这显然只适用于OS X和Linux:
phppath = '/usr/bin/php'<br>
pluginpath = sublime.packages_path() + '/HtmlTidy/tidy.php'<br>
retval = os.system( '%s "%s"' % ( phppath, scriptpath ) )
但是在Windows上,php.exe似乎没有明确的默认路径。我用它搜索的越多,就越有可能出现。到目前为止,我认为我必须检查以下每条路径是否存在:
c:\php\php.exe
c:\php5\php.exe
c:\windows\php.exe
c:\program files\php\php.exe
c:\wamp\bin\php\php5\php.exe
c:\xampp\php\php.exe
这已经是一个非常集合,但我要求的是完整的列表,涵盖所有可能性 - 或另一种解决方法应该是检查每条可能的路径。
因此,如果您在除此之外的某些地方安装了php.exe,请在路径中留下评论,我会将其添加到上面的列表中。
此外,似乎有php.exe
和php-cli.exe
。我想可以循环遍历每个可能的路径,首先检查php-cli.exe,然后检查php.exe并进行第一场比赛。这是正确的还是有更好的做法?
答案 0 :(得分:32)
如果用户已将PHP的bin文件夹添加到系统PATH
,那么您应该可以尝试执行php -v
来检查它是否存在。
如果你想获得php可执行文件的完整路径,目标系统是Windows 2003或更高版本(所以Vista和7),那么你可以使用WHERE
命令,即:
C:\>where php.exe
C:\Program Files (x86)\WAMP\bin\php\php5.3.5\php.exe
另请参阅可能相关的问题:Is there an equivalent of 'which' on the Windows command line?。
如果您真的急于在用户的计算机上找到任何文件,您可以尝试执行find
的等效项 - 但它会是 slooow !
C: && cd \ && dir /s /b php.exe
答案 1 :(得分:4)
从PHP 5.4及更高版本开始,您可以使用PHP_BINARY常量。
答案 2 :(得分:2)
在 powershell 或命令提示符下 php -r "echo PHP_VERSION;"给出版本
查看其他 PHP 常量: https://www.php.net/manual/es/reserved.constants.php
回答你的问题
php -r "echo PHP_BINARY;" 给出 php.exe 的完整路径
如果需要,删除 php.exe
php -r "echo str_replace('php.exe', '', PHP_BINARY);"
答案 3 :(得分:0)
C:\xampp\php\php.exe
如果您的xampp在 D:或 E:上应该可以工作,因此您从 C:
进行相应更改答案 4 :(得分:-1)
试
echo PHP_BINDIR;
它有效,我在MacOS上测试它与php 5.6一样