首页 > PHP编程 > 关于PHP has encountered an Access Violation问题的解决
2015
12-14

关于PHP has encountered an Access Violation问题的解决

关于PHP has encountered an Access Violation(PHP已经遇到了一个访问冲突在xxxx)问题的解决,问题描述:服务器系统为windows2003.先重启一下IIS就能当时解决这个问题,但是后面还会时不时发生PHP has encountered an Access Violation错误。下面是一些解决办法的总结。

一、去掉 php中 eaccelerator 的扩展 这样做能够解决您的问题

不过可能会加重系统负担 因为eaccelerator主要是为了节省系统资源的东西具体做法是找到php.ini 如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini

去掉

zend_extension_ts="C:/php/extensions/eaccelerator_win_xxx.dll" 

eaccelerator.shm_size="16" 

eaccelerator.cache_dir="c:/temp" 

eaccelerator.enable="1" 

eaccelerator.optimizer="1" 

eaccelerator.check_mtime="1" 

eaccelerator.debug="0" 

eaccelerator.filter="" 

eaccelerator.shm_max="0" 

eaccelerator.shm_ttl="0" 

eaccelerator.shm_prune_period="0" 

eaccelerator.shm_only="0" 

eaccelerator.compress="1" 

eaccelerator.compress_level="9" 

eaccelerator主要是在unix环境下开发的,但是作者忽略到windows实际上不像unix主机那样,是没有unix主机的那种内存共享机制的 这个bug已经提交给他们了,希望能够解决.当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件 配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右。

二、session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限。

三、 c:/winnt/temp 或者 c:/windows/temp 也需要everyone的所有权限

四、您的内存严重不足,查看一下,如果有问题,请加内存。

五、第五种可能 ZendOptimizer和php的搭配不是很好 换个版本试试看

六、这种多属于用win2003的用户 他们在应用池中设定了限制 比如多长时间回收,最大使用内存多少等等 这些设置势必造成这个经典的php错误

1、定时重启应用程序池

综合参考以上解决方法,我们服务器是win2003的,所以我想加一个定时重启IIS应用程序池的功能,就是每天晚上12点重启一下IIS里网站应用程序池,我想这样就是双保险了,应该没有什么问题.

以下是我定时重启iis应用程序池的批处理程序:

首先:在c :/window/system32目录下新建一个iispoolrestar.vbs文件,内容如下:

set WebAppPool = GetObject("IIS://LocalHost/w3svc/AppPools/DefaultAppPool") 

WebAppPool.Stop 

WebAppPool.Start

其中DefaultAppPool是IIS网站下的应用程序池的名称(我的应用程序池名是这个,根据实际的修改)

然后:新建一个bat处理文件。如:iispoolrestart.bat,内容如下:

cscript c:/windows/system32/iispoolrestar.vbs

如果服务器是windows的,可以使用系统自带的任务计划 定时执行该iispoolrestart.bat程序,我目前是每天晚上12点执行一次重启应用程序池。

2、对出现错误的网站单独建立应用程序池。

3、设置IIS多个工作进程

临时解决方法就是: 

w3wp.exe是在IIS与应用程序池相关联的一个进程,用两个工作进程(w3wp.exe)运行,在web站点属性中把1设为2 

具体方法如下: 

①打开 Internet 信息服务(IIS)管理器 

②展开 应用程序池 找到你站点应用的程序池 右击---属性---性能---把web园最大工作进程数(w):改为3 

七、问题出在libmysql.dll上.

 因为PHP和MYSQL都有libmysql.dll,并且是不一样的文件,我在配置IIS+PHP环境时是按照Chinaz的一文章,那文中说安装完 Mysql后再把libmysql.dll 复制到C:\Windows\system32下,结果这步就是导致问题的原因了。

解决问题方法很简单,把C:\Windows\system32 下的libmysql.dll换成PHP目录下的就OK了。

当然可以不用复制到系统目录下,直接在PHP.INI中指定extension_dir就可以啦,并且要增加系统环境变量 D:\PHP;D:\php\ext

作者:admin
admin
TTF的家园-www.ttfde.top 个人博客以便写写东西,欢迎喜欢互联网的朋友一起交流!

本文》有 2 条评论

  1. 匿名 匿名 说:

    来逛逛

  1. 好文章 好文章 说:

    过来看看、支持一下

留下一个回复