訪問php時提示記憶體位置訪問無效的解決辦法和思路分析

來源:互聯網
上載者:User

我們就需要找到是哪一個DLL檔案載入出現了問題。排查方法是:

將php.ini中 display_startup_errors = Off 改為display_startup_errors = On 。
這是訪問php頁面,伺服器上會彈出php錯誤的提示對話方塊,你就可以明確看到是哪一個dll檔案載入失敗,有時會有多個dll檔案載入失敗,需要你先分號(;)注釋掉php.ini中提示那個dll後繼續訪問如此反覆排查。
把出問題的dll都用分號(;)注釋掉後,php就可以正常運行了。

如果載入失敗的dll是你必須使用的擴充庫檔案,那麼就要從版本是否對應、檔案是否齊全、檔案是否已損壞等等方面去排查載入失敗的原因了。不同的擴充具有不同的情況,這裡就無法一一羅列了,記住:搜尋引擎是你最好的幫手,針對單個dll去搜尋解決的方法吧。

另外:新版本的Windows版本PHP,在出現錯誤時,會將詳細的錯誤資訊自動儲存到Windows系統的TEMP臨時目錄,檔案名稱為:php-errors.log。在Windows2003系統中路徑一般是:C:\WINDOWS\Temp\php-errors.log。用記事本開啟這個檔案,就可以看到詳細的php錯誤記錄了。

此處往下是從網上轉載的內容:

客戶一個PHP網站每天早上都訪問不了,提示“記憶體位置訪問無效”,重啟IIS無效,要重啟伺服器才能暫時正常,過一會兒又是出現這個“記憶體位置訪問無效”的提示。
到百度上搜尋了一下,找到解決方案,在此記錄一下:
開啟c:\windows\php.ini檔案,搜尋下面的欄位
extension=php_exif.dll
找到後在前面加一個;分號注釋掉
如下:
;extension=php_exif.dll
儲存重啟iis再訪問一下php檔案看看能否開啟了,沒有出現記憶體位置訪問無效了。

以上操作實際上是把php_exif.dll組件禁用了。如果一定要用到這個組件可以試試下面這個方法:
一、將IIS的錯誤顯示開啟,未發現錯誤原因
二、檢查IIS擴充,ISAPI、php.ini與Mysql配置以及相應的安裝目錄ACLs許可權,均無誤。
三、回收IIS進程,錯誤仍然出現”記憶體位置訪問無效”….
四、將php.ini中 display_startup_errors = On 開啟,問題所在終於發現了… (注:如果將php.ini的display_startup_errors開啟,如果php有錯誤出理,就會提示,而且 在事件檢視器中有記錄。如果設定為display_startup_errors = Off,則不會有任何提示)
五、Warning Cannot load module ‘SQLite' because required module ‘pdo' is no loaded
六、根據以上錯誤提示,解決辦法就很簡單了,因為載入php_sqlite.dll時未載入到php_pdo.dll檔案,所以運行phpinfo()函數時提示記憶體 位置訪問無效。
找到php.ini設定檔,然後去掉”;extension=php_pdo.dll”前面的分號,extension=php_sqlite.dll
然後再回收一下IIS應用程式集區進程,問題徹底解決….

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.