在windows xp中安装配置了php和apache服务器,但是重启apache服务器的时候提示"httpd错误-内存不能为read"。在网上搜了一下,解决方案不多,有一个比较靠谱的是说如果php是msi安装的那么会缺少几个lib的dll,因此换成压缩包的那种问题就会解决。
但是这个方法对我没效,无论是复制过来缺少的dll还是重新换zip包甚至用appserv都有同样的错误出现。
后来找到解决办法是把system32里面的php5ts.dll删除。结果一切正常了。
这个php5ts.dll是我参考一本php自学手册配置php时放进去的,那本书说把php目录下相关的dll都拷贝到system32,如此云云……没想到竟然导致了这么个错误。
网上搜到某人这么一段话:
php5ts.dll文件是php的内核动态链接库文件,没有此文件则php解析器无法使用。
因此在windows里Apache加载PHP时,Apache不止要加载PHP的Apache模块
LoadModule php5_module "path/to/php5apache2_2.dll"
指定什么类型文件用php解析器解析
AddType application/x-httpd-php .php
很重要的一点是将php5ts.dll文件拷到可搜索的系统目录 中,即windows的环境变量如c;/windows/system32。
另外PHP支持mysql时php5ts.dll文件还需要 libmysql.dll的支持,因此libmysql.dll文件也要copy到到可搜索路径中。
我现在安装的是appserv,system32中没有php5ts.dll,但是用户path当中有php的目录,因此可以正常运行。