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_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"

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

4、您的内存严重不足

5、ZendOptimizer和php的搭配不是很好,换个版本试试看

6、这种多属于用win2003的用户,他们在应用池中设定了限制,比如多长时间回收,最大使用内存多少等等

技术部门推荐,重启IIS即可,因为这个错误出现的几率非常低。

以下是补充一:

打开网页发下如下错误:PHP has encountered an Access Violation at
  当网站出现这个错误时候,首先要检查一下你的网站具体的错误原因。可能返回的同一个错误但是出现的原因可能是不一样的。比如感冒其实分很多种的哈!只有找到错误的原因才能更好更快的解决错误。
  登陆你服务器打开系统日志。即在命令行中输入eventvwr在弹出的对话框中点击系统我在里面发现这个网站有一下错误提示:

看到这个错误错误的原因可以断定是:用户在更改过匿名用户访问后出现的。
  处理办法:
  1、重新建一个网站把主目录的路径指向原文件的目录。
  1、右键网站--属性--目录安全性--身份验证和访问控制--编辑在用户和密码中输入正确的用户名密码。
  刷新网址一切正常。这个错误是根据本机的实际情况处理的。你也要根据自己本机的具体错误原因解决存在的问题。

你再看看以下几点.
1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限 
2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵 
3,php.ini有两个地方没有设置,而且一些程序必须用到的


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


出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将
session.save_path和session.cookie_path 设置置为  
   session_save_path = c:\temp  
   session.cookie_path = c:\temp  
   然后在c:\目录下建立一个temp目录,即可(前面我们的eaccelerarot正好用到,建立过这么一个文件
夹)
或者因为安装了一些组件导致。都可以参考下。
最近我的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,好使了,重启服务器,也好使了,做了个简单的压力测试,也好使了。

  到此问题解决,留个日志纪念下,我一个礼拜才解决的这个鸟问题。

(0)

相关推荐

  • php结合ACCESS的跨库查询功能

    问题说明: 有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现. 解决方法: 例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下: 复制代码 代码如下: @"Select * from 装材类型 as a INNER JOIN [;database=" AppDomain.CurrentDomain.BaseDirectory &qu

  • php静态化页面 htaccess写法详解(htaccess怎么写?)

    1 . 如何让自己的本地APACHE服务器支持.htaccess 如何让自己的本地APACHE服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了,来看看操作 打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找 (1) Options FollowSymLinks AllowOverride None 改为 Options FollowSymLink

  • PHP连接Access数据库的方法小结

    PHP代码: 需要注意php获取路径用的是realpath 复制代码 代码如下: <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $issuetime=date("Y-m-d

  • PHP连接access数据库

    复制代码 代码如下: <?PHP /*    创建ADO连接 */ $conn = @new COM("ADODB.Connection") or die ("ADO Connection faild."); $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("DATUM/cnbt.mdb"); $conn->Open($c

  • 教你如何在CI框架中使用 .htaccess 隐藏url中index.php

    秉承MVC架构的思想,CI中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用.也就是说,在默认情况下,所有CI开发项目的URL都形如以下这种形式: http://localhost/index.php/blog/logs/this_is_a_test_entry 很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行.我们可以通过下面本文介绍的方法来去掉这个讨厌的Index.php. 你或许已经注意到在CodeIgniter用

  • Access的跨库查询 (图)

    大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询.下面我就给大家介绍下access的跨库查询. 首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:\daos\db\daidalos.mdb里的admin表的内容进行查询,SQL语句为: javascript:if(this.width>500)this.width=500" border=0> 查询后,成功返回目标数据库里表admin表里的内容:

  • Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess

    Apache 从2.2升级到 Apache2.4.x 后配置文件 httpd.conf 的设置方法有了大变化,以前是将 deny from all 全部改成 Allow from all 实现外网访问,现在是将 Require all denied 以及 Require local 都该为 Require all granted 就可以了. .htaccess 如果不起作用将 LoadModule rewrite_module modules/mod_rewrite.so 前面的注释(#)去掉就

  • You don’t have permission to access /index.php on.

    今天在测试 PHP集成环境 Apache服务器时,一切正常,在转换虚拟目录时,突然出现错误提示"You don't have permission to access /index.php on."无论如何都不能正常浏览,再切换回原目录时,显示正常,只要切换虚拟目录,问题依旧. 其实这里是由于 httpd-conf 里面的配置问题,打开httpd-conf:逐行检查.在大约快一半的地方有以下这段代码: 复制代码 代码如下: <Directory /> Options Fol

  • 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 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

    主要出现在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

  • SQL查询语句通配符与ACCESS模糊查询like的解决方法

    ACCESS的通配符和SQL SERVER的通配符比较===================================================ACCESS库的通配符为:*   与任何个数的字符匹配?   与任何单个字母的字符匹配 SQL Server中的通配符为:% 与任何个数的字符匹配_ 与单个字符匹配正文我今天在写个页面的时候,也很郁闷,表中明明有记录,但在ASP里就是搜索不到,理论的sql语句如下:Select * FROM t_food Where t_food.name

  • Access数据库不能写不能更新的解决方法

    Access数据库不能写,造成这种问题的原因是Web共享文件夹在NTFS分区里,而IUSR_***(Internet来宾帐户)没有足够权限.解决方法: 1.在文件夹选项里,将"使用简单文件共享"前的对勾去掉. 2.在Web共享文件夹属性里面的安全选项卡中点添加. 3.在选择用户或组的对话框中点高级. 4.点立即查找,随后在下面选择IUSR_***,确定. 5.返回文件夹属性,将IUSR_***权限设置为允许修改,写入 IIS不能读写数据库(ACCESS)问题原因主要是由于无法更新数据库

  • php连接Access数据库错误及解决方法

    php+access连接数据库常用的方式一般有两种. 推荐的代码 需要注意php获取路径用的是realpath 复制代码 代码如下: <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $i

  • Asp下Access无法更新的解决方法

    在windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为: 1.Microsoft JET Database Engine (0x80040E09) 不能更新.数据库或对象为只读 2.Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询. 3.Microsoft JET Database

  • mysql Access denied for user ‘root’@’localhost’ (using password: YES)解决方法

    今天在启动mysql时出现以下问题: [root@www ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 网上的答案是各种各样的,最终解决问题的方法总结为以下,好多都是没有设置初始密码造成此问题的. 解决方法如下: [root@www ~]# service mysqld stop #先关闭mysql服务

随机推荐