PHP has encountered an Access Violation

主要出现在windows主机的服务器上。
在php官方,http://bugs.php.net/
也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+Access&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错误
木头经过数以百计的测试,敢担保问题会出现在这里。

(0)

相关推荐

  • PHP has encountered an Access Violation at XXXXXX 的解决方法

    排错方法: 最好先查看系统日志文件,我们从日志中就可以发现很多问题. 我们就是因为数据库表出错,修复一下就可以了,重启下iis或重启下服务器试试. 有客户反映在美国VPS中出现该错误:PHP has encountered an Access Violation at * 根据错误提示,可以用以下办法解决: 1.重启IIS,重启VPS主机即可. 2.关闭eaccelerator扩展 找到php.ini 如果是我帮您配置的,一般在c:/windows/php.ini 去掉 zend_extensi

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

    搭建wordpress的时候发觉居然会报这种错误,网上的解决方案都是千篇一律的复制粘贴,都是关于eaccelerator的设置问题,我很奇怪我并没有安装这个扩展啊?不过倒是安装过APC扩展,两种扩展都是优化服务器做底层代码支持,实现缓存共享.将APC关闭就不报错了. 一般是因为eaccelerator的问题解决方法如下:php for windows的bug 参考: 第一种可能: 去掉 php中 eaccelerator 的扩展 这样做能够解决您的问题,不过可能会加重系统负担 因为eaccele

  • PHP has encountered an Access Violation at XXXXXX  的解决方法

    排错方法: 最好先查看系统日志文件,我们从日志中就可以发现很多问题. 我们就是因为数据库表出错,修复一下就可以了,重启下iis或重启下服务器试试. 有客户反映在美国VPS中出现该错误:PHP has encountered an Access Violation at * 根据错误提示,可以用以下办法解决: 1.重启IIS,重启VPS主机即可. 2.关闭eaccelerator扩展 找到php.ini 如果是我帮您配置的,一般在c:/windows/php.ini 去掉 zend_extensi

  • PHP has encountered an Access Violation

    主要出现在windows主机的服务器上. 在php官方,http://bugs.php.net/ 也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决 http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+Access&x=8&y=9 目前我提供一下这几年我维护经验,我的一些民间解决办法 第一种可能: 去掉 php中 eaccelerator 的扩展

  • PHP has encountered an Access Violation at 7C94BD02解决方法

    解决方法如下: 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\eaccelerat

  • Laravel 5.4因特殊字段太长导致migrations报错的解决

    前言 本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误: [Illuminate\Database\QueryException] SQLS

  • C++ 异常处理 catch(...)介绍

    如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的catch用法,那就是" catch(-)". 感性认识 1.catch(-)到底是一个什么样的东东,先来个感性认识吧!看例子先: 复制代码 代码如下: int main() { try { cout << "在 try block 中, 准备抛出一个异常." << endl; //这里抛出一个异常(其中异常对象的数据类型是int,值为1

  • 10个.NET中删除空白字符串的方法

    我们有无数方法可用于删除字符串中的所有空白,但是哪个更快呢? 介绍 如果你问空白是什么,那说起来还真是有些乱.许多人认为空白就是SPACE 字符(UnicodeU+0020,ASCII 32,HTML ),但它实际上还包括使得版式水平和垂直出现空格的所有字符.事实上,这是一整类定义为Unicode字符数据库的字符. 本文所说的空白,不但指的是它的正确定义,同时也包括string.Replace(" ", "")方法. 这里的基准方法,将删除所有头尾和中间的空白.这就

  • ORACLE错误一览表 方便查询

    ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-000

  • Laravel 5.4中migrate报错: Specified key was too long error的解决

    前言 大家都知道,我们经常做项目都团队协作开发,每个人都在自己本地的数据库,如果你曾经出现过让同事手动在数据库结构中添加字段的情况,数据库迁移可以解决你这个问题. 不仅如此,在线上部署的时候,也避免了手动导入数据库或手动修改数据结构的麻烦,数据迁移帮你方便的维护着数据结构. 但方便的同时也会伴随着一些问题,下面这篇文章将详细给大家介绍关于Laravel5.4中migrate报错Specified key was too long error的解决方法,下面话不多说了,来一起看看详细的介绍吧. 发

随机推荐