1. <bdo id="lumra"></bdo>
        <strong id="lumra"></strong>

      1. <i id="lumra"></i>

        當前位置 主頁 > iis相關 >

          關于IIS+PHP出現“500 - 內部服務器錯誤”的問題解決

          欄目:iis相關 時間:2018-09-14 15:07

            借著騰訊云的活動筆者成功租賃了一臺系統為WindowsServer2012R2的服務器,目前服務端構成是IIS+PHP+MySQL。不過最近在使用PHP操作MySQL數據庫的時候遇到了問題。有時會出現“500-內部服務器錯誤”,如下圖:
           
            但是問題來了,實際上PHP代碼在本地測試的時候(Windows10+Apache+PHP+MySQL)卻正常,沒有報錯。如下圖,同樣的代碼和相同的參數,訪問同樣的數據庫。
           
            看樣子是IIS+PHP的組合出了問題。為了解決問題,我們要排除500的錯誤可能是哪些,根據查閱的資料,筆者首先把IIS本身可能會產生500錯誤的地方全部進行了排查,比如讀寫權限等等。那么剩下的問題可能就出在php上面了。進一步查閱資料,有人在之前遇到了類似的情況,最后是通過對PHP工作目錄下的php.ini進行參數的修改解決的。php.ini中需要修改的內容如下(修改或者添加):
           
            display_errors=On
           
            error_log="C:\windows\Temp\php-5.x.yy_errors.log"
           
            error_reporting=E_ALL
           
            fastcgi.logging=0
           
            html_errors=On
           
            log_errors=On
           
            筆者按照上面的內容對服務器的php.ini進行了修改,但是出現了新的問題。如圖:
           
            500錯誤終于是沒了,然后出現了新的問題,What???PHP什么時候用變量要定義了(扶額)……
           
            只能硬著頭皮繼續找去掉解決方案,最終找到了兩種解決方案:
           
            一、修改php.ini
           
            error_reporting=E_ALL&~E_NOTICE
           
            register_globals=On
           
            這個問題其實主要出在error_reporting的參數,下面的register_globals筆者在php.ini中沒有找到(筆者使用的是php7),不添加也沒有問題。
           
            二、在php文件的頭部添加如下代碼
           
            ini_set("error_reporting","E_ALL&~E_NOTICE");
           
            這個方案適合沒有php.ini讀寫權限或者不想進行ini配置的情況,也能夠解決問題。
           
            再次訪問相同的頁面,終于沒有500錯誤和未定義變量的提示了,沒有比無報錯更讓人淚流滿面的事情了。
           
        縮小 縮小 縮小 縮小
        雅彩彩票登录