|
这个问题折磨了我半天,也找了很多种方法尝试都未果。由于之前都用集成组合软件做开发,Win下单独配置时其他都很顺利,唯独很多php扩展完全无法加载。
我通过apache的httpd.conf里添加 LoadModule php5_module "C:/webware/php/php5apache2_2.dll" 来运行php。
我输出 get_loaded_extensions(), 无论重启多少次都是一样。通过 phpinfo() 可以看到, Loaded Configuration File 为 no value,我的windows目录下是没有php.ini的。 其实这只不过是由于安装完第一次运行php时,php目录下并没有php.ini,php使用了默认值,之后也是,所以php/php.ini未起作用。
于是我httpd.conf添加上
PhpIniDir "C:/webware/php"
这句导致apache不能启动,但是php的配置文件位置却变成了php目录下的php.ini了, 试了多次来观察几者之间的关系:
LoadModule php5_module "C:/webware/php/php5apache2_2.dll"
LoadFile "C:/webware/php/libeay32.dll"
LoadFile "C:/webware/php/ssleay32.dll"
LoadFile "C:/webware/php/libmysql.dll"
PhpIniDir "C:/webware/php"
此时 php目录下的 php.ini 生效, 但是可能因为同时加载了 php_mysql.dll , php_mysqli.dll, php_pdo_mysql.dll 而无法启动apache。 遇到这种情况可以先注释这三个extension运行一次apache(php目录下的php.ini将被加载),# PhpIniDir注释掉, 然后重新配置php这三项extension。
可以依次排除来寻找故障,最好先不要include多余的文件。 尝试把apache的这三个dll复制到 windows/system32 和 php 目录下。
配置不当时,启动apache可能一直无响应,任务管理器结束apache, 再次启动便直接失败。 其实这只不过是 httpd.exe 仍然卡住了,不必重启, 命令行强制结束:
taskkill /F /IM httpd.exe
可能遇到的错误:
httpd.exe: Could not reliably determine the server's fully qualified domain name, using 23.23.16.96 for ServerName
解决:httpd.conf 中 添加 ServerName localhost:80 (或者可能使用真实IP)即可。——这个其实与ssl无关的
|
|