排錯(cuò)方法:
最好先查看系統(tǒng)日志文件,我們從日志中就可以發(fā)現(xiàn)很多問(wèn)題。
我們就是因?yàn)閿?shù)據(jù)庫(kù)表出錯(cuò),修復(fù)一下就可以了,重啟下iis或重啟下服務(wù)器試試。
有客戶(hù)反映在美國(guó)VPS中出現(xiàn)該錯(cuò)誤:PHP has encountered an Access Violation at *
根據(jù)錯(cuò)誤提示,可以用以下辦法解決:
1、重啟IIS,重啟VPS主機(jī)即可。
2、關(guān)閉eaccelerator擴(kuò)展
找到php.ini
如果是我?guī)湍渲玫?,一般在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 需要設(shè)定一個(gè)實(shí)際的物理路徑,并且該目錄需要everyone的所有權(quán)限,類(lèi)似U主機(jī)的0777
4、您的內(nèi)存嚴(yán)重不足
5、ZendOptimizer和php的搭配不是很好,換個(gè)版本試試看
6、這種多屬于用win2003的用戶(hù),他們?cè)趹?yīng)用池中設(shè)定了限制,比如多長(zhǎng)時(shí)間回收,最大使用內(nèi)存多少等等
技術(shù)部門(mén)推薦,重啟IIS即可,因?yàn)檫@個(gè)錯(cuò)誤出現(xiàn)的幾率非常低。
以下是補(bǔ)充一:
打開(kāi)網(wǎng)頁(yè)發(fā)下如下錯(cuò)誤:PHP has encountered an Access Violation at
當(dāng)網(wǎng)站出現(xiàn)這個(gè)錯(cuò)誤時(shí)候,首先要檢查一下你的網(wǎng)站具體的錯(cuò)誤原因??赡芊祷氐耐粋€(gè)錯(cuò)誤但是出現(xiàn)的原因可能是不一樣的。比如感冒其實(shí)分很多種的哈!只有找到錯(cuò)誤的原因才能更好更快的解決錯(cuò)誤。
登陸你服務(wù)器打開(kāi)系統(tǒng)日志。即在命令行中輸入eventvwr在彈出的對(duì)話(huà)框中點(diǎn)擊系統(tǒng)我在里面發(fā)現(xiàn)這個(gè)網(wǎng)站有一下錯(cuò)誤提示:

看到這個(gè)錯(cuò)誤錯(cuò)誤的原因可以斷定是:用戶(hù)在更改過(guò)匿名用戶(hù)訪(fǎng)問(wèn)后出現(xiàn)的。
處理辦法:
1、重新建一個(gè)網(wǎng)站把主目錄的路徑指向原文件的目錄。
1、右鍵網(wǎng)站--屬性--目錄安全性--身份驗(yàn)證和訪(fǎng)問(wèn)控制--編輯在用戶(hù)和密碼中輸入正確的用戶(hù)名密碼。
刷新網(wǎng)址一切正常。這個(gè)錯(cuò)誤是根據(jù)本機(jī)的實(shí)際情況處理的。你也要根據(jù)自己本機(jī)的具體錯(cuò)誤原因解決存在的問(wèn)題。
你再看看以下幾點(diǎn).
1,是否zend所需的dll文件所在目錄給的權(quán)限不夠,必須有讀取和運(yùn)行的權(quán)限
2,是否使用的2003,設(shè)置過(guò)應(yīng)用池,比如池中限制了什么什么,調(diào)整一下再試試看,是否好了,呵呵
3,php.ini有兩個(gè)地方?jīng)]有設(shè)置,而且一些程序必須用到的
A
將;upload_tmp_dir該行的注釋符,即前面的分號(hào)“;”去掉,使該行在php.ini文檔中起作用。
upload_tmp_dir是用來(lái)定義上傳文件存放的臨時(shí)路徑,在這里你還可以給其定義一個(gè)絕對(duì)路徑,例如:
upload_tmp_dir = d:/upload 當(dāng)然,此時(shí)你的d:upload目錄必須有讀寫(xiě)權(quán)限。
這里我設(shè)置為
upload_tmp_dir = c:/temp (因?yàn)榍懊娼⒘诉@個(gè)文件夾,我圖省事,呵呵)
B
出現(xiàn)這樣的錯(cuò)誤語(yǔ)句一般是因?yàn)槟愕膒hp.ini中關(guān)于session.save_path一項(xiàng)沒(méi)有設(shè)置好,解決的方法是將
session.save_path和session.cookie_path 設(shè)置置為
session_save_path = c:/temp
session.cookie_path = c:/temp
然后在c:/目錄下建立一個(gè)temp目錄,即可(前面我們的eaccelerarot正好用到,建立過(guò)這么一個(gè)文件
夾)
或者因?yàn)榘惭b了一些組件導(dǎo)致。都可以參考下。
最近我的windows2003服務(wù)器頻繁出現(xiàn)“PHP has encountered an Access Violation at ××××××”這樣的錯(cuò)誤,嘗試搜索了下,遇到這樣問(wèn)題的人還真不少。我的原因可以鎖定在eaccelerator上面,因?yàn)橹皃hp運(yùn)行效率不大滿(mǎn)意,所以裝了eaccelerator加速,效果還是不錯(cuò)的,但隨著數(shù)據(jù)庫(kù)不斷加大,查詢(xún)和更新數(shù)據(jù)庫(kù)操作太頻繁,出現(xiàn)了“PHP has encountered an Access Violation at ××××××”這個(gè)錯(cuò)誤。網(wǎng)上的解決辦法無(wú)非就是去掉eaccelerator加速,這肯定不行,因?yàn)槲乙?,那就按他們說(shuō)的配置一下吧,什么臨時(shí)文件啊、session路徑啊,都改了,還是不行,于是就想是不是mysql版本的問(wèn)題呢?看了下,發(fā)現(xiàn)dll的大小和修改日期還真不一致,于是把mysql下的dll覆蓋了從php里拷貝到系統(tǒng)目錄的dll,重啟iis,貌似好了,但是重啟服務(wù)器后又出現(xiàn)了,看來(lái)問(wèn)題不在這,難道是iis應(yīng)用程序池的問(wèn)題?
嘗試去除這個(gè)站點(diǎn)的所有限制,但是重啟服務(wù)器后發(fā)現(xiàn)又不行,還是這個(gè)錯(cuò)誤。觀察了下,只要重啟iis就能臨時(shí)解決這個(gè)問(wèn)題,但是這不治本啊。仔細(xì)想了下,既然我的環(huán)境沒(méi)有問(wèn)題,是在裝了eaccelerator后出現(xiàn)問(wèn)題,那就從eaccelerator下手。仔細(xì)檢查每個(gè)配置,發(fā)現(xiàn)我配置的一點(diǎn)問(wèn)題都沒(méi)有,無(wú)論eaccelerator的版本、php的版本,還是mysql的版本,都沒(méi)問(wèn)題,權(quán)限也都?jí)?,php.ini配置也正確,但重啟iis就好使一陣子,于是把問(wèn)題定位到應(yīng)用程序池。因?yàn)槲业膇is之前配置一點(diǎn)問(wèn)題都沒(méi)有。最近看eaccelerator資料是共享內(nèi)存和硬盤(pán),難道是iis應(yīng)用程序池和其他站點(diǎn)共享導(dǎo)致這個(gè)問(wèn)題?于是重新建立應(yīng)用程序池,把這個(gè)應(yīng)用程序池只獨(dú)立分配給出問(wèn)題的站點(diǎn),適當(dāng)減少對(duì)資源的限制,重啟iis,好使了,重啟服務(wù)器,也好使了,做了個(gè)簡(jiǎn)單的壓力測(cè)試,也好使了。
到此問(wèn)題解決,留個(gè)日志紀(jì)念下,我一個(gè)禮拜才解決的這個(gè)鳥(niǎo)問(wèn)題。
新聞熱點(diǎn)
疑難解答
圖片精選