如何在 Windows 上确定 php.exe 的路径 - 搜索默认路径

Posted

技术标签:

【中文标题】如何在 Windows 上确定 php.exe 的路径 - 搜索默认路径【英文标题】:How to determine path to php.exe on Windows - search default paths 【发布时间】:2012-03-27 13:58:07 【问题描述】:

我目前正在为 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.exephp-cli.exe。我想循环遍历每条可能的路径是可以的。首先检查 php-cli.exe,检查 php.exe,然后获取第一个匹配项。这是正确的还是有更好的做法?

【问题讨论】:

我只会在 Windows PATH 中搜索它,然后如果它不存在,则提示用户输入它。你的清单永远不会是完整的。而且,如果用户有多个 php.exe 路径怎么办?我现在有 5 或 6 个 php.exe。 查看PHPRC 环境变量。它包含php.exe 所在的目录。它通常在 Windows 系统上可用。 你也许可以搜索注册表,但我不是这方面的专家,所以我不能说。 【参考方案1】:

如果用户已将 PHP 的 bin 文件夹添加到系统 PATH,那么您应该可以尝试执行 php -v 来检查它是否存在。

如果你想获得 PHP 可执行文件的完整路径,并且目标系统是Windows Server 2003 或更高版本(所以Windows Vista 和Windows 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

【讨论】:

where 找不到我的php.exe。实际上,它似乎只在 PATH 和当前目录中查找。 @Kos 你能告诉我们,你的 php.exe实际上在哪里吗? 谢谢 JonnyReeves,where 可能会完成这项工作,但是您发布的链接上的第一个答案让我看到了这个似乎可以很好地处理 PATH 和 PATHEXT 的 python 脚本:nedbatchelder.com/code/utilities/wh_py.html - 由于 Sublime Text 2 的插件是在 python 中的,我将使用它的一些代码行来最小化调用外部程序。 @Mat 之前提到的常规 WAMP 安装,C:\wamp\bin\php\php5.3.9\php.exe where /? 说“默认情况下,搜索是沿着当前目录和 PATH 环境变量指定的路径完成的。”【参考方案2】:

从 PHP 5.4 及更高版本开始,您可以使用 PHP_BINARY 常量。

【讨论】:

对于我们所有的菜鸟来说,如果用更长的解释更新这将是有用的。 echo PHP_BINARY; 但它在 Linux 上什么也没给我。 在我的情况下,它返回 C:\xampp\apache\bin\httpd.exe 不执行文件,而 C:\xampp\php\php.exe 执行【参考方案3】:

试试

echo PHP_BINDIR;

它有效。我在 macOS 上使用 PHP 5.6 对其进行了测试。

【讨论】:

问题是关于 Windows 而不是 Mac。这不起作用 很高兴知道。感谢您分享您的体验。您尝试过什么系统配置? php 版本等...【参考方案4】:

用途:

C:\xampp\php\php.exe

如果您的 XAMPP 实例位于 D:E: 上,它应该可以工作。您从 C: 相应地更改它。

【讨论】:

【参考方案5】:

在 powershell 或 commad 提示符下 php -r "回显 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);"

【讨论】:

以上是关于如何在 Windows 上确定 php.exe 的路径 - 搜索默认路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows使用Composer

symfony 不能在 Windows Server 2008 上运行

请问windows下如何管理php-cgi进程

完美解决windows+ngnix+phpcgi自动退出的问题

如何确定 Java 是不是在 Windows 上运行

Windows环境下Composer的安装教程