OPENSSL問題,使用fsockopen()函式提示錯誤
環境配置
系統環境 CentOS7.2
WDCP v3.2.2 lanmp
PHP 多版本 指定使用5.6
OpenSSL 1.0.2h 3 May 2016
php.ini相關設定
allow_url_fopen = On
allow_url_include = On
openssl.cafile= /www/wdlinux/nginx/conf/cert/cacert.pem (後來下載OPENSSL證照放上的)
問題描述
PHP程式中使用
- $matches = parse_url($url);
- $host = $matches[`host`];
- $path = $matches[`path`] ? $matches[`path`].($matches[`query`] ? `?`.$matches[`query`] : “) : `/`;
- $transports = “;
- if($matches[`scheme`] == `https`) { //判斷是否使用HTTPS
- $transports = `ssl://`; //如使用HTTPS則使用SSL協議
- $port = !empty($matches[`port`]) ? $matches[`port`] : 443; //如使用HTTPS埠使用443
- } else {
- $transports = `tcp://`; //如沒有使用HTTPS則使用tcp協議
- $port = !empty($matches[`port`]) ? $matches[`port`] : 80;//如沒有使用HTTPS則使用80埠
- }
- $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
複製程式碼
其中此PHP檔案執行無效果,生成error_log資訊如下
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
- error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed | ../client.class.php | 395
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): Failed to enable crypto | ../client.class.php | 395
- <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): unable to connect to ssl://www.xxx.net:443 (Unknown error) | p../client.class.php | 395
複製程式碼
395行就是以上程式碼中的 $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
百度很多資料,沒找到相關PHP報錯的資料,找到一些E文網站,大約是說沒有下載openssl根證照,於是更具資料提示下載OpenSSL根證照,並在php.ini設定OPENSSL證照位置,還是不能正常執行,報以上錯誤,估計是OPENSSL環境配置的問題,請admin指點
我百度了一些錯誤關鍵詞
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
好像都是說關於openssl根證照的問題,大神能幫看下如何解決嗎
經過三天的摸索和查詢資料,現在我已確定問題所在
此問題和wdcp無關,和php版本以及openssl相關
主要是因為php在5.6版本(包含5.6)以後的所有版本中如使用fsockopen() 或file_get_content()函式獲取https站點的資訊,OPENSSL會驗證對方站點的SSL證照頒發機構是否可信,如果沒有下載openssl根證照並在php.ini中設定openssl根證照路徑,就會造成無法驗證對方網站SSL證照是否可信,就無法使用上述兩個函式獲取到內容同時生成PHP警告資訊,php5.6以前的老版本中此驗證功能是沒有開啟或者說是沒有作用的。所以php5.6以前的版本不存在此問題!
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
特在此說明原因,同時希望我這兩天的折騰對以後遇到同樣問題的朋友有所幫助少走彎路
如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/
相關文章
- MySql中SUM函式計算錯誤問題MySql函式
- ThinkPHP函式提示錯誤function undefined的方法PHP函式FunctionUndefined
- Visual Studio 2022 Typescript 程式碼錯誤提示故障問題TypeScript
- Discuz!論壇進行環境檢測時提示不支援fsockopen和pfsockopen函式函式
- Windows 下 PHP 7 中 *getcsv 函式解析 CSV 錯誤的問題記錄WindowsPHP函式
- 關於使用toFixed()函式時報錯”toFixed() is not a function”的問題函式Function
- 在scanf函式中佔位符使用錯誤而產生的一些錯誤函式
- 使用React Hooks時遇到的錯誤提示ReactHook
- 六、函式、包和錯誤處理函式
- MSB3721錯誤+CUDA中pow函式出錯函式
- MySQL錯誤提示(10061)MySql
- Windows7遠端連線提示身份驗證錯誤,要求的函式不支援。Windows函式
- mysql執行函式出現1418錯誤MySql函式
- mysql的時區錯誤問題MySql
- Nessus提示API Disabled錯誤API
- onethink安裝提示錯誤
- 在vue使用異常處理做錯誤提示Vue
- 關於Qt5.8以上高版本程式碼補全和錯誤提示問題QT
- Debug: setTimeout 使用做定時器時的錯誤函式傳遞方式定時器函式
- Excel小技巧-公式和函式使用的常見八種錯誤合集Excel公式函式
- 兄弟連go教程(15)函式 - 錯誤處理Go函式
- PbootCMS錯誤提示:執行SQL發生錯誤!錯誤:no such column: def1bootSQL
- 函式呼叫棧的問題函式
- [20180509]函式索引問題.txt函式索引
- 解決 ngrok 的 Domain 錯誤問題AI
- Auth::logoutOtherDevices 導致密碼錯誤問題Godev密碼
- 修改網站後提示證書錯誤,解決SSL證書問題的全面指南網站
- 教你如何解決win10執行msi提示錯誤程式碼2502的問題Win10
- 執行 valet 提示 sudo 問題和 undefined function Valet\collect () 錯誤的解決辦法UndefinedFunction
- 網站提示400錯誤:錯誤請求怎麼辦網站
- 汗,查了很久的問題,竟然是過載錯函式函式
- Steam錯誤程式碼138怎麼辦?無法訪問社群提示138錯誤解決方法
- 安裝golang tour,提示錯誤Golang
- 如何關閉PHP錯誤提示PHP
- org.thymeleaf.exceptions.TemplateInputException:模板錯誤報錯問題Exception
- Nuxt.js 錯誤偵探:useError 組合函式UXJSError函式
- Swap函式的寫法及其常見錯誤示例函式
- Go 錯誤處理新思路?用左側函式和表示式Go函式
- Microsoft Store安裝應用提示錯誤0x80070005以及WindowsApps許可權問題ROSWindowsAPP