tom*_*umb 6 php apache windows-server-2008-r2
我对Windows Server 2008 R2上的PHP有一个非常恼人的问题.IIS和Apache正在同一台机器上运行(Apache嵌入了另一个产品,而且我没有选择它).
IIS配置为能够使用多个版本的PHP,并且没有安装Windows安装程序的PHP版本(因此路径中不存在php.exe).
Apache使用一个特定版本的PHP(5.2.5线程安全 - 再次我无法改变这一点,因为第三方应用程序具有针对此版本编译的PHP扩展).
如果我在我的Apache站点中检查phpinfo()它没有MySQL的条目,即使在php.ini中启用了php_mysql.dll并且它存在于\ ext目录中.如果我(暂时)将此版本的PHP(相同目录,相同的php.ini)添加到IIS并使用phpinfo()设置测试站点,它会正确列出MySQL.我知道这不仅仅是phpinfo的一个奇怪的问题,因为我有一个基于MySQL的PHP站点在Apache中运行而且它失败了Call to undefined function mysql_connect()
有人建议我将libmysql.dll从PHP目录复制到C:\ Windows\System32,但这并没有什么区别.由于服务器上有多个版本的PHP,我认为可能是加载了错误版本的libmysql.dll,但PATH不包含任何包含libmysql.dll的目录.
IIS和Apache正在查看完全相同的PHP安装,php.ini和ext目录,但只有IIS可以加载MySQL扩展.Apache位于默认的系统帐户上,因为它看起来像System可以访问所有DLL.
Apache日志没有说明任何DLL无法加载.我在事件日志中记录了PHP错误,但没有报告这些扩展.
在谷歌搜索问题后,我在Windows服务器上发现了PHP中其他突然发生的问题,但通常的解决方案 - 重建php.ini,重启IIS,重启服务器 - 没有帮助.
关于下一步看哪里的任何建议都非常感谢!
最终这个问题归结为缺少 PATH 引用。尽管 IIS 似乎并不要求路径中存在 PHP 或 PHP 模块,但 Apache(或者可能是我的 PHP 版本?)似乎需要。我很幸运,我只需要在 IIS 之外运行 PHP 的一个版本,因为我不知道如果我有多个 Apache 实例引用不同版本的 PHP 和路径中的多个 PHP 目录会发生什么 - 大概总是会失败。
到目前为止,看起来将 Apache 版本的 PHP 添加到路径中并没有影响 IIS 版本的 PHP,但如果突然影响,我会大声发誓。
归档时间: |
|
查看次数: |
2509 次 |
最近记录: |