PHP has encountered an Access Violation解決方法總結
這個問題不是很好處理,困惑了很多站長非常時間了主要出現(xiàn)在windows主機的服務器上。在php官方,http://bugs.php.net/也能夠查到兩三千頁的報告,他們官方也是束手無策,經(jīng)過了11個小版本后,還是沒有徹底解決http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+Access&x=8&y=9
目前我提供一下這幾年我維護經(jīng)驗,我的一些民間解決辦法
第一種可能:
去掉 php中 eaccelerator 的擴展這樣做能夠解決您的問題,不過可能會加重系統(tǒng)負擔因為eaccelerator主要是為了節(jié)省系統(tǒng)資源的東西
具體做法是找到php.ini如果是我?guī)湍渲玫模话阍赾:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini
去掉
zend_extension_ts='C:phpextensionseaccelerator_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環(huán)境下開發(fā)的,但是作者忽略到windows實際上不像u主機那樣,是沒有u主機的那種內(nèi)存共享機制的這個bug已經(jīng)提交給他們了,希望0.9.5能夠解決
當然,如果您的機器這個問題不嚴重,建議還是保留,ea是一塊非常優(yōu)秀的Php緩存+加速軟件配合zo使用,將會降低系統(tǒng)負擔 50%-80%左右,提高負載能力、速度和效率 200%左右
第二種可能
session_save_path 需要設定一個實際的物理路徑,并且該目錄需要everyone的所有權限,類似U主機的0777
第三種可能c:/winnt/temp 或者 c:/windows/temp也需要everyone的所有權限,類似U主機的0777
第四種可能您的內(nèi)存嚴重不足,查看一下,如果有問題,請加內(nèi)存,最好是一次加兩條比如加1G內(nèi)存,最好是加2條一模一樣的512M。否則沒有啟用雙通道,效果也很一般
第五種可能ZendOptimizer和php的搭配不是很好換個版本試試看目前比較穩(wěn)定的搭配是php4.3.11+zo 2.5.10a或者php4.4.1+zo 3.0 beta2
第六種可能
這種多屬于用win2003的用戶他們在應用池中設定了限制比如多長時間回收,最大使用內(nèi)存多少等等這些設置勢必造成這個經(jīng)典的php錯誤木頭經(jīng)過數(shù)以百計的測試,敢擔保問題會出現(xiàn)在這里。
