php.ini上的分隔符包括路径

时间:2012-11-28 09:50:27

标签: php

我目前正在企业中安装subversion协议,一些用户在Windows上在本地Wamp服务器上开发,而其他用户使用本地Lamp服务器。主站点在linux服务器上运行。

我遇到的问题是在php.ini文件中设置包含路径。由于某些文件会动态更改此设置,因此这将变得很痛苦。

Windows机器在include路径中需要使用分号(;)分隔符,而linux机器需要冒号(:)。

有没有办法更改Windows机器的配置以使用冒号作为包含路径分隔符?

1 个答案:

答案 0 :(得分:0)

一切皆有可能,但解决方案可能比这种情况下的问题更痛苦。

路径分隔符在PHP二进制可执行文件中是硬编码的。最可行的选择是从这里下载Windows的PHP源代码: (重要:下载与LAMP系统完全相同的版本)。

http://windows.php.net/download/

下载并解压缩后,打开文件:

/Zend/zend.h

查看第41行动态预编译器指令:

#ifdef ZEND_WIN32
# include "zend_config.w32.h"
# define ZEND_PATHS_SEPARATOR       ';'
#elif defined(NETWARE)
# include <zend_config.h>
# define ZEND_PATHS_SEPARATOR       ';'
#elif defined(__riscos__)
# include <zend_config.h>
# define ZEND_PATHS_SEPARATOR       ';'
#else
# include <zend_config.h>
# define ZEND_PATHS_SEPARATOR       ':'
#endif

您可以在那里更改Windows分隔符。

现在编译PHP包。使用Visual Studio可以执行以下步骤:

https://wiki.php.net/internals/windows/stepbystepbuild

理论上,您将能够使用与Linux机器相同的分隔符来运行WAMP而不是WAMP。

但是还有另一个问题......这个配置会出现什么问题吗?你必须自己找到答案。

<强> ALTERNATIVE:

如果您不想更改影响整个系统的预编译器指令,您可以尝试将其变为“脏”&#34;并且仅更改&#34; main / php_ini.c&#34;在第413行(aprox)。

static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 };

通过&#39;更改常量名称;&#39;字符,并编译如上所述。