[服务器] PHP has encountered an Access Violation解决方法总结

[复制链接]
admin 发表于 2021-5-27 23:06:57 | 显示全部楼层 |阅读模式

登录后,购买下载资源更方便!

您需要 登录 才可以下载或查看,没有账号?立即注册

×

这个问题不是很好处理,困惑了很多站长非常时间了
- ^. U+ \, b, L  H9 Y3 n主要出现在windows主机的服务器上。
$ [2 E' ^: F# z: D. N3 `4 m8 xphp官方,http://bugs.php.net/
; x( b7 S+ ?* O  c/ J$ l0 h也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
; ~) Y& C7 F" V+ r  C; {& Phttp://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+access&x=8&y=9

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

第一种可能:

去掉 php中 eaccelerator 的扩展+ e5 ?# U7 @$ E3 O& z
这样做能够解决您的问题,不过可能会加重系统负担
- f) d" R1 }  |$ c% `+ ~因为eaccelerator主要是为了节省系统资源的东西

具体做法是找到php.ini
2 A( ~% c, t% K如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini

去掉

zend_extension_ts="C:\php\extensions\eaccelerator_win_xxx.dll"
0 h0 X2 u. F; g: Heaccelerator.shm_size="16"7 S, j' i: a8 d7 o* r% S
eaccelerator.cache_dir="c:\temp"
6 e1 D; k0 f4 {eaccelerator.enable="1"
0 J# _& l9 H; Y% D, neaccelerator.optimizer="1"
8 N8 |( h& m6 O( d  q7 Meaccelerator.check_mtime="1"
! C1 C* Z0 X7 k9 J1 neaccelerator.debug="0"8 _/ b% D: E9 |8 }: A2 H
eaccelerator.filter=""" Z7 N+ ?4 w! g$ V
eaccelerator.shm_max="0"; _  K* k  d1 o
eaccelerator.shm_ttl="0") }# B  G1 y& y  s) ]
eaccelerator.shm_PRune_period="0"3 l4 C( @3 y4 _  Q$ I6 L! z
eaccelerator.shm_only="0"
& c: W8 j- `8 C% ]eaccelerator.compress="1"; n% s% Q' H6 N- ^
eaccelerator.compress_level="9"

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

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

  n: e' s+ ?. T' \. V0 J+ J+ v


: f; B8 v! }* f9 U, @3 o  k  N第二种可能

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

5 P* i0 t: p* r: l4 i6 v/ P

. A; ]- b9 H) s4 y) A" W: |1 {
第三种可能/ Z/ W* t$ ?/ F0 t8 N
c:/winnt/temp 或者 c:/windows/temp) C& K3 b/ T2 P& Y# n/ B& y
也需要everyone的所有权限,类似U主机的0777

3 E3 H% H% N- f) h8 a7 g: ?

' T- a0 V% U# X( ^5 e. Z
第四种可能
! E( ]( h& H2 n: H6 p您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条5 Z, s% R1 r' z4 v6 T
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般


+ f: y! s4 w9 |


7 c! `  n1 R! J$ I第五种可能0 U% F, M: W: K5 _2 Q
ZendOptimizer和php的搭配不是很好
1 U, y+ J) Y+ R+ v7 B. I换个版本试试看+ ?" k3 ^% e5 i/ J0 M! q/ P
目前比较稳定的搭配是+ _- W- M2 r) u' H" K
php4.3.11+zo 2.5.10a; {4 N4 N8 n1 G9 f1 Q
或者php4.4.1+zo 3.0 beta2


6 [) U. n6 p0 c


% Z% k4 R! G; S& L第六种可能

这种多属于用win2003的用户
' p  d: B6 q2 G" M6 V: \他们在应用池中设定了限制3 H: C, ~$ {2 @. C4 t" F, i
比如多长时间回收,最大使用内存多少等等
& |0 F& r2 d; m/ i这些设置势必造成这个经典的php错误
$ C+ M! Q! M. X  H' y木头经过数以百计的测试,敢担保问题会出现在这里。


- [7 A! [: ]# t$ @/ L) M
评论0

手机版|小黑屋|源码模版|全球支付|VISA信用卡|MASTER信用卡|科恒数字网-持续研发、集成、交付、运营方案资源库

GMT+8, 2026-6-5 23:21 , Processed in 0.054441 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.