首頁 > 軟體

php顯示failed to open stream: HTTP request failed! HTTP/1.1錯誤的解決辦法

2021-05-26 02:30:56

今天在處理縮圖裁剪程式碼的時候偶現一條錯誤「failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found」,最開始以為是記憶體不足,後來百度一下不是這個問題。大概的原因是處理縮圖裁剪的時候,發現連結出現錯誤,因為測試站開啟了網站密碼這就導致查詢不到http狀態碼,所以這個時候就出現了這個錯誤提示。

我再用的是php7.4和8.0,其中8.0出現錯誤提示,那麼如何解決failed-to-open-stream:-HTTP-request-failed的錯誤呢按照百度的教程有兩種完美的解決辦法。

第一種方法:

利用php偽造user_agent(偽造user agent的程式碼的位置)file_get_contents偽造user_agent 方法如下:

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)');curl偽造user_agent的方法:

curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)');ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)');$html=file_get_contents($url); 可能有些看不懂哈,沒事,我也看不懂,但是看起來很厲害的樣子有沒有?既然看不懂就越過吧,畢竟函數程式碼不是都寫成一個樣子的,改錯了可能導致更大的錯誤,那麼可以試試學習下面的方法。

第二種方法:

解決failed-to-open-stream:-HTTP-request-failed的問題

開啟伺服器php配置檔案php.ini(別問我這個檔案在哪)找到這兩個選項:allow_url_fopen=on(表示可以通過url開啟遠端檔案,如果是off修改成on),user_agent="PHP"(表示通過哪種指令碼訪問網路,預設前面有個 " ; " 去掉即可。)然後過載或者重啟php伺服器即可,如果是寶塔伺服器,直接在軟體管理,找到站點所用的php版本,修改配置,搜尋上面選項,做出修改儲存,過載服務就可以了。

部分網友可能還是會有這個警告資訊,想用完美的解決還差一步,還得設定php.ini裡面的user_agent,php預設的user_agent是PHP,我們把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)來模擬瀏覽器就可以了

user_agent=」Mozilla/4.0(compatible;MSIE6.0; Windows NT5.0)」我是沒用修改這個,僅僅是部分會出現,我只是把前面的;分號取消了然後網站就正常的,當然我也並不清楚這個是我主題的問題還是裁剪程式碼的問題,如果您覺得費事,可以考慮不開啟縮圖裁剪,在zbp1.7版本之後縮圖裁剪用的是官方自帶的程式碼,不是之前網上找的,所以可能是php相容性問題吧,搞不懂,畢竟不會PHP。。。


IT145.com E-mail:sddin#qq.com