Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows上的PHP_BINDIR不正确?_Php - Fatal编程技术网

Windows上的PHP_BINDIR不正确?

Windows上的PHP_BINDIR不正确?,php,Php,当我在Windows上使用PHP 5.6(来自)运行脚本时,我得到了一个令人困惑的结果: $binary = PHP_BINARY; // $binary: "C:\wamp\bin\php\php5.6.15\php.exe" $bindir = PHP_BINDIR; // $bindir: "C:\php" PHP\u BINARY是正确的,但是PHP\u BINDIR是完全错误的。后一个变量是否已弃用?还有什么其他想法可以解释为什么它会输出一些磁盘上根本不存在的随机路径吗?PHP

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

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


PHP\u BINARY
是正确的,但是
PHP\u BINDIR
是完全错误的。后一个变量是否已弃用?还有什么其他想法可以解释为什么它会输出一些磁盘上根本不存在的随机路径吗?

PHP\u BINARY
是在运行时设置的值(当脚本执行时)

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

路径被设置为configure中使用的前缀(Linux等价物:
/configure--prefix
)。windows上的默认路径是
C:\php
。如果不重新编译PHP,就无法更改它


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

问题在于
PHP_BINDIR
,根据
PHP内部文件/11c783wgty/bug-54514
在编译时设置。这表明这一点在以后可能会改变

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


因此,不要使用
PHP\u BINDIR
查找当前可执行文件的运行位置。

您可以共享脚本吗?这是脚本。我声明了两个变量,并将其作为PhpStorm的单元测试运行。(右侧显示的变量内容是PhpStorm的调试功能。)希望对您有所帮助。