【问题标题】:PHP_BINDIR on Windows incorrect?Windows 上的 PHP_BINDIR 不正确?
【发布时间】:2016-05-29 08:50:41
【问题描述】:

当我使用 PHP 5.6(来自 WampServer 2.4)在 Windows 上运行脚本时,我得到了这个令人困惑的结果:

$binary = PHP_BINARY;  // $binary: "C:\wamp\bin\php\php5.6.15\php.exe"
$bindir = PHP_BINDIR;  // $bindir: "C:\php"

PHP_BINARY 是正确的,但 PHP_BINDIR 是完全错误的。后一个变量是否已弃用或什么?任何其他想法为什么它会输出一些我的磁盘上甚至不存在的随机路径?

【问题讨论】:

  • 可以分享一下脚本吗?
  • 这是脚本。我声明了两个变量并将其作为 PhpStorm 的单元测试运行。 (右边显示的变量内容是PhpStorm的调试功能。)
  • 我希望this answer 会有所帮助。

标签: php


【解决方案1】:

PHP_BINARY 是在 runtime(脚本执行时)设置的值

PHP_BINDIR 是在编译时而不是在运行时设置的值。

路径设置为配置中使用的前缀(Linux 等效:./configure --prefix <path>)。 Windows 上的默认路径是C:\php。如果不重新编译 PHP,就无法更改它。

要获取路径,您应该跟踪PHP_BINARY

【讨论】:

    【解决方案2】:

    问题在于PHP_BINDIR,根据php-internals/11c783wgty/bug-54514,它是在编译时设置的。这表明这可能会在以后发生变化。

    在编译时设置的任何内容都与 Windows 用户无关,因为我们通常依赖其他人来进行编译,因为 Windows 没有免费的编译器。据我所知,这将适用于在 unix 机器和 windows 机器上编译的 php,因为没有理由肯定 PHP 是从它编译的地方运行的。

    所以不要使用PHP_BINDIR 来查找当前可执行文件的运行位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2014-12-24
      • 1970-01-01
      相关资源
      最近更新 更多