2012-11-28 232 views
3

我目前在业务中安装了Subversion协议,一些用户在Windows上在本地Wamp服务器上开发,而其他人则使用本地Lamp服务器。主站点在Linux服务器上运行。php.ini上的分隔符包含路径

我遇到的问题是在php.ini文件中设置包含路径。由于一些文件在运行中改变了这个设置,这变成一种痛苦。

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

有什么办法可以改变Windows机器的配置,使用冒号作为包含路径分隔符吗?

+0

你是否将不同的体系结构分发给相同的php.ini文件? – deceze

回答

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 

在那里,你可以改变窗口分离。

现在编译PHP包。这可能与Visual Studio,请按照下列步骤操作:

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

从理论上讲,你将能够通过与WAMP同一分隔符不是在Linux机器上运行PHP。

但还有另外一个问题......这个配置是否给出了任何问题?你必须自己找到答案。

替代方案:

如果你不想改变影响整个系统的预编译器指令,你可以尽量做到“脏”,改变只在线路413“主/ php_ini.c” (近似)。

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

按';'更改常量名称字符,并像上面描述的那样进行编译。