科恒数字网

标题: PHP has encountered an Access Violation解决方法总结 [打印本页]

作者: admin    时间: 2021-5-27 23:06
标题: PHP has encountered an Access Violation解决方法总结

这个问题不是很好处理,困惑了很多站长非常时间了
  a! e4 [4 M. U3 @4 z/ Z( C8 y  N主要出现在windows主机的服务器上。
; x5 d( O$ f5 Y3 a- v: |- o6 Jphp官方,http://bugs.php.net/
3 E3 l* o( T$ C$ ?也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决' j+ i7 @' }  ^$ g& f2 _/ x
http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+access&x=8&y=9

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

第一种可能:

去掉 php中 eaccelerator 的扩展5 V* d5 |  D4 U- V1 R% f
这样做能够解决您的问题,不过可能会加重系统负担
; S. E. _  `8 @! B+ \- C  o( _因为eaccelerator主要是为了节省系统资源的东西

具体做法是找到php.ini: \! P: _; Y: f  S2 i: w
如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini

去掉

zend_extension_ts="C:\php\extensions\eaccelerator_win_xxx.dll"' i; m* u/ g3 o2 h
eaccelerator.shm_size="16": ~2 p1 C, J$ i
eaccelerator.cache_dir="c:\temp"' C- `  q. a8 S; y  j: L
eaccelerator.enable="1"
* {& U9 w' z" |9 F9 w1 A4 }8 R/ R: Teaccelerator.optimizer="1"
5 l+ b: z" d" r0 W- zeaccelerator.check_mtime="1"
$ w' B# L/ ~. n$ S& g- {eaccelerator.debug="0"
% q) m, J5 L1 O. ]$ [eaccelerator.filter=""
1 P- \2 A+ c7 @8 C+ ?! zeaccelerator.shm_max="0"
, S, ^# D5 v6 c) Heaccelerator.shm_ttl="0"4 m( B4 s7 P% Y( ~/ g7 F1 H3 I, I' q
eaccelerator.shm_PRune_period="0"
4 E2 R$ P: S1 L5 peaccelerator.shm_only="0"9 z4 O5 t" C, H) i% j
eaccelerator.compress="1"
3 }+ [3 y0 u& `& q0 Ceaccelerator.compress_level="9"

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

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

' ^! e7 w3 H, X& q: {


- k2 M0 t2 D2 ^+ U( `7 ?第二种可能

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


( L9 U4 z- ~" C


: d  h$ D) g$ R  j3 H第三种可能/ s$ Q6 {6 ~/ i" P/ I( L
c:/winnt/temp 或者 c:/windows/temp
3 k3 c3 W$ o; n5 I. ?也需要everyone的所有权限,类似U主机的0777

2 g1 s$ D# v9 w; F5 M

2 \4 S: I- f5 ?9 S" x* E
第四种可能; j) k% S; U$ ]9 ]1 W! \
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条7 i1 H9 m; p' g- z; s
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般


" t! Q6 `  p, z( I

8 g' R! w* a  E; I( T% {
第五种可能+ ?5 B0 |* U7 }" n7 s# i+ j! S
ZendOptimizer和php的搭配不是很好
- L5 V; D$ U1 t* \换个版本试试看
) m( C/ s/ f6 }/ N3 J0 g3 ]9 q7 G目前比较稳定的搭配是, T4 \1 a$ f( h# r3 _( r
php4.3.11+zo 2.5.10a! |( ~5 }" [) W: r+ c, l
或者php4.4.1+zo 3.0 beta2


. o' m, K, r5 N9 m, s5 R


6 ]6 Q1 F4 u' o5 ^. L# |# ]6 ?. T第六种可能

这种多属于用win2003的用户' ~! E( P( _' w; j1 ?  E* z
他们在应用池中设定了限制: q5 ^; @% t! {
比如多长时间回收,最大使用内存多少等等3 P4 s7 z) }0 \% H) g
这些设置势必造成这个经典的php错误4 e+ E( x1 t* h/ M
木头经过数以百计的测试,敢担保问题会出现在这里。

& Q7 m6 B2 |0 v6 Y1 q  m





欢迎光临 科恒数字网 (https://www.khcic.com/) Powered by Discuz! X3.5