PHP has encountered an Access Violation at 解决办法
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-21 17:39:45 浏览: 评论:0
今天在iis中使用php环境时发现用了一会运行php文件就提示PHP has encountered an Access xxx错误了,在网上找了很多的解决办法,下面我来给各位总结一下各种解决方法与原理.
iis+php环境,有客户反映在VPS中出现该错误,PHP has encountered an Access Violation at *
根据错误提示,可以用以下办法解决:
1、重启IIS,重启VPS主机即可。
2、关闭eaccelerator扩展
找到php.ini,如果是我帮您配置的,一般在c:/windows/php.ini,去掉:
- zend_extension_ts="C:phpextensionseaccelerator_win_xxx.dll"
- eaccelerator.shm_size="16"//开源软件:phpfensi.com
- 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"
3、session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777.
4、您的内存严重不足.
5、ZendOptimizer和php的搭配不是很好,换个版本试试看.
6、这种多属于用win2003的用户,他们在应用池中设定了限制,比如多长时间回收,最大使用内存多少等等.
技术部门推荐,重启IIS即可,因为这个错误出现的几率非常低.
php+apache环境
1、更新到5.2后php版本
2、是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限
3、如果使用的是windows系统,是否设置过应用池,比如池中限制了什么
4、高版本的PHP和Mysql存在兼容性的问题。c:/windows/system32下的libmysql.dll 使用php下的,不要使用mysql下的,因为两个程序下都有
5、php.ini有两个地方没有设置
1) 将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。
upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径 比如:upload_tmp_dir = d:\tmp (d:\tmp目录必须有读写权限)
2) php.ini中关于session.save_path一项没有设置好,解决的方法是将 session.save_path和session.cookie_path 定义一个绝对路径
比如:session_save_path = d:\temp session.cookie_path = d:\temp (d:\tmp目录必须有读写权限)
或者因为安装了一些组件导致,都可以参考下.
最近我的windows2003服务器频繁出现“PHP has encountered an Access Violation at ××××××”这样的错误,尝试搜索了下,遇到这样问题的人还真不少。我的原因可以锁定在eaccelerator上面,因为之前php运行效率不大满意,所以装了eaccelerator加速,效果还是不错的,但随着数据库不断加大,查询和更新数据库操作太频繁,出现了“PHP has encountered an Access Violation at ××××××”这个错误。
网上的解决办法无非就是去掉eaccelerator加速,这肯定不行,因为我要用,那就按他们说的配置一下吧,什么临时文件啊、session路径啊,都改了,还是不行,于是就想是不是mysql版本的问题呢?看了下,发现dll的大小和修改日期还真不一致,于是把mysql下的dll覆盖了从php里拷贝到系统目录的dll,重启iis,貌似好了,但是重启服务器后又出现了,看来问题不在这,难道是iis应用程序池的问题?
尝试去除这个站点的所有限制,但是重启服务器后发现又不行,还是这个错误。观察了下,只要重启iis就能临时解决这个问题,但是这不治本啊。仔细想了下,既然我的环境没有问题,是在装了eaccelerator后出现问题,那就从eaccelerator下手。仔细检查每个配置,发现我配置的一点问题都没有,无论eaccelerator的版本、php的版本,还是mysql的版本,都没问题,权限也都够,php.ini配置也正确,但重启iis就好使一阵子,于是把问题定位到应用程序池。
因为我的iis之前配置一点问题都没有,最近看eaccelerator资料是共享内存和硬盘,难道是iis应用程序池和其他站点共享导致这个问题?于是重新建立应用程序池,把这个应用程序池只独立分配给出问题的站点,适当减少对资源的限制,重启iis,好使了,重启服务器,也好使了,做了个简单的压力测试,也好使了。
Tags: encountered an Access Violation
相关文章
- ·PHP has encountered a Stack overflow问题解决方法(2021-04-22)
- ·php An error occured(2013-11-28)
- ·Cannot use object of type stdClass as array(2013-11-28)
- ·Fatal error: Cannot redeclare 常见问题(2013-11-29)
- ·php Notice : Use of undefined constant解决办法(2013-11-30)
- ·php Cannot modify header information-headers already sent by解决办法(2013-12-04)
- ·Warning: Cannot modify header information - headers already sent by (2013-12-04)
- ·php 数组运算符(+)、字符串运算符(.)、逻辑运算符(&& AND || OR XO(2014-03-14)
- ·php rand() 随机数生成的方法介绍(2014-03-22)
- ·php数据类型 - Boolean 布尔类型(2014-06-11)
- ·PHP使用动态Constant与Define值(2014-07-10)
- ·sscanf定义和用法及分析(2014-09-18)
- ·PHP5.3提示Fatal error: Undefined class constant MYSQL_ATTR_INIT_COMMAND(2014-09-20)
- ·PHP Fatal error: Cannot use object of type stdClass as array in错误(2014-09-20)
- ·php提示Notice: Use of undefined constant错误(2014-09-21)
- ·解决phpMyAdmin Cannot start session without errors错误(2014-09-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)