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

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

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

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

×

这个问题不是很好处理,困惑了很多站长非常时间了" s" Y2 g) O1 K
主要出现在windows主机的服务器上。
* j9 T% H+ @6 V$ K# B8 Cphp官方,http://bugs.php.net/
3 _" }% R/ u+ _/ ~$ Y9 j: d也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
2 ~5 q7 S# ?7 v" M& Dhttp://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+access&x=8&y=9

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

第一种可能:

去掉 php中 eaccelerator 的扩展5 Y( \* w6 z, l$ }( d
这样做能够解决您的问题,不过可能会加重系统负担: J( t; f7 T0 P) \( O: j
因为eaccelerator主要是为了节省系统资源的东西

具体做法是找到php.ini$ S" J" e6 b6 b+ X& X
如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini

去掉

zend_extension_ts="C:\php\extensions\eaccelerator_win_xxx.dll"
- ^( z3 P( @+ v$ @! Qeaccelerator.shm_size="16"
' \* r' E& b+ ]: Teaccelerator.cache_dir="c:\temp"7 O/ A: C* ?- t" X
eaccelerator.enable="1"' {! D( f7 m9 ?) }
eaccelerator.optimizer="1"
* @/ t" H: h0 O4 N! ?eaccelerator.check_mtime="1"( N/ W$ S. y* B! S
eaccelerator.debug="0"
. d5 f' f9 c5 y: Geaccelerator.filter=""& E0 T9 b! y$ C4 _
eaccelerator.shm_max="0"
2 o; T2 c. w1 Jeaccelerator.shm_ttl="0"0 P: _" Y5 x+ @8 V$ t) J
eaccelerator.shm_PRune_period="0"
9 A" D1 p; L3 J4 ^eaccelerator.shm_only="0"% m! P4 Y9 M4 r1 s; m: f/ `4 V- o
eaccelerator.compress="1"7 h5 Q5 W! S% j, `- F8 b9 V
eaccelerator.compress_level="9"

ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
3 k3 I: |* b  l9 o, ^5 }这个bug已经提交给他们了,希望0.9.5能够解决

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


4 A+ ^- S6 N% `


: @+ p# _0 S: Y; u! P9 V' r7 o3 o第二种可能

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


9 }+ h' G4 i% }- r


- ~6 c1 |) q# l" `% t$ r& f第三种可能5 ]4 C8 O& z( q, p) e8 ^
c:/winnt/temp 或者 c:/windows/temp
0 z7 ]6 J7 T6 Y- J0 F/ N, m也需要everyone的所有权限,类似U主机的0777


+ j. g# s$ Q# B- K# m

9 U. \+ S1 {4 y+ S
第四种可能
* i: q3 v& {2 t- [! I& C2 D您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条( R6 S# D+ h9 p5 h1 z
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般

; L3 @0 V: c! y! l- g9 e

% B) R5 A# t1 ]: t  T$ _9 l+ [
第五种可能& Y& Z& {: C3 ^: k9 @1 e$ Y
ZendOptimizer和php的搭配不是很好
* {" j' j. U. `( I5 E换个版本试试看  @+ Q1 Q- T! S1 r9 a
目前比较稳定的搭配是
6 z7 z. e6 |) o, x( A& M/ `php4.3.11+zo 2.5.10a
% o4 z* W  _. u, m: `或者php4.4.1+zo 3.0 beta2


5 g+ K; H; P( z/ L8 D6 X

# d7 I8 Q8 X, f; O
第六种可能

这种多属于用win2003的用户
5 K5 `/ {0 x; b* n& A他们在应用池中设定了限制
* @* q# \0 H5 p- l0 p9 ^  T4 x- n8 A比如多长时间回收,最大使用内存多少等等
7 o0 N& b- f. k9 b这些设置势必造成这个经典的php错误0 t8 Z- {! [9 f/ B7 W; D
木头经过数以百计的测试,敢担保问题会出现在这里。

3 o0 q$ c; }, q3 |6 C! v- d% |
评论0

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

GMT+8, 2025-7-3 14:45 , Processed in 0.044976 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.