当我使用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
完全错误。后一个变量是否已被弃用?任何其他的想法,为什么它会输出一些甚至不存在于我的磁盘上的随机路径?
答案 0 :(得分:4)
/pages/payment/complete.aspx?error=12
/pages/payment/complete.aspx?paymentid=f7f19bba-ff1e-48b5-901f-be2cdb4319a5&error=3
是运行时上设置的值(执行脚本时)
PHP_BINARY
是在编译时上设置的值,而不是在运行时。
路径设置为configure中使用的前缀(Linux等效:PHP_BINDIR
)。 Windows上的默认路径为./configure --prefix <path>
。如果不重新编译PHP,就无法更改它。
要获得路径,您应该追踪C:\php
。
答案 1 :(得分:0)
问题在于PHP_BINDIR
根据php-internals/11c783wgty/bug-54514
在编译时设置。这表明这可能会在以后发生变化。
在编译时设置的任何东西都会与至少我们的Windows用户无关,因为我们通常依赖其他人来进行编译,因为Windows没有免费的编译器。据我所知,这将适用于在unix机器和Windows机器上编译的php,因为没有理由认为PHP正在从编译到的地方运行。
所以不要使用PHP_BINDIR
来查找当前可执行文件的运行位置。