PHP has encountered an Access Violation 错误的解决方法


Posted in PHP onJanuary 17, 2010

搭建wordpress的时候发觉居然会报这种错误,网上的解决方案都是千篇一律的复制粘贴,都是关于eaccelerator的设置问题,我很奇怪我并没有安装这个扩展啊?不过倒是安装过APC扩展,两种扩展都是优化服务器做底层代码支持,实现缓存共享。将APC关闭就不报错了。

一般是因为eaccelerator的问题
解决方法如下:
php for windows的bug
参考:

第一种可能:

去掉 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"

ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
这个bug已经提交给他们了,希望0.9.5能够解决

当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件
配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右

第二种可能

session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777

第三种可能
c:/winnt/temp 或者 c:/windows/temp
也需要everyone的所有权限,类似U主机的0777

第四种可能
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般

第五种可能
ZendOptimizer和php的搭配不是很好
换个版本试试看
目前比较稳定的搭配是
php4.3.11+zo 2.5.10a
或者php4.4.1+zo 3.0 beta2

第六种可能

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

很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题
1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限
2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵
3,php.ini有两个地方没有设置,而且一些程序必须用到的

A
将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。 
这里我设置为 
upload_tmp_dir = "c:\windows\temp\"

B
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为 
session.save_path = "c:\windows\temp\" 
session.cookie_path = "c:\windows\temp\" 
(这个设置不知道是否正确.没试过.)
   也可以在c:\目录下建立一个temp目录,即可(前面我们的eaccelerarot正好用到,建立过这么一个文件夹)

PHP has encountered an Access Violation解决方法总结
这个问题不是很好处理,困惑了很多站长非常时间了
主要出现在windows主机的服务器上。
在php官方,http://bugs.php.net/
也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
http://bugs.php.net/search.php?c ... ess&x=8&y=9

目前我提供一下这几年我维护经验,我的一些民间解决办法

本贴不断更新,请关注!!! 引用:
第一种可能:

去掉 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"

ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
这个bug已经提交给他们了,希望0.9.5能够解决

当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件
配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右引用:
第二种可能

session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777引用:
第三种可能
c:/winnt/temp 或者 c:/windows/temp
也需要everyone的所有权限,类似U主机的0777引用:
第四种可能
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般引用:
第五种可能
ZendOptimizer和php的搭配不是很好
换个版本试试看
目前比较稳定的搭配是
php4.3.11+zo 2.5.10a
或者php4.4.1+zo 3.0 beta2引用:
第六种可能

这种多属于用win2003的用户
他们在应用池中设定了限制
比如多长时间回收,最大使用内存多少等等
这些设置势必造成这个经典的php错误
木头经过数以百计的测试,敢担保问题会出现在这里。引用:
第七种解决办法
2003用户,可以通过修改正在运行的应用池的, “性能”-“WEB园”“最大工作进程数”来解决.
曾经有个用户,直到加为10,才彻底解决了这个问题。

PHP 相关文章推荐
用PHP制作静态网站的模板框架(一)
Oct 09 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
获取远程文件大小的php函数
Jan 11 #PHP
PHP 编程安全性小结
Jan 08 #PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 #PHP
PHP5.3.1 不再支持ISAPI
Jan 08 #PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 #PHP
php实现的遍历文件夹下所有文件,编辑删除
Jan 05 #PHP
处理php自动反斜杠的函数代码
Jan 05 #PHP
You might like
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php实现监听事件
2013/11/06 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
php检测文本的编码
2015/07/26 PHP
php实现网站留言板功能
2015/11/04 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
nodejs教程之环境安装及运行
2014/11/21 NodeJs
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python线程中的同步问题及解决方法
2019/08/29 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
2013年军训通讯稿
2014/02/05 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android