[英]TCPDF: getimagesize(): SSL operation failed with code 1 error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
[英]"getimagesize(): SSL operation failed with code 1" on local Xampp only
getimagesize() 在 Xampp(本地 PC)中失敗,盡管它在實時環境中運行良好。
根據錯誤消息,問題似乎與證書配置有關。 我根據這篇文章創建了自簽名證書: https : //shellcreeper.com/how-to-create-valid-ssl-in-localhost-for-xampp/
這從 Apache 的錯誤日志中刪除了 SSL 警告,但 getimage() 的問題仍然相同。
如果我使用http
而不是https
傳遞圖像的 URL,則調用會起作用。
<?php
$file = "http://webtest.test/content/uploads/img.jpg"; // Will work
$file = "https://webtest.test/content/uploads/img.jpg"; // Will not work
// ...
$img_info = getimagesize($file);
if(!$img_info) {
throw new Exception(__("The file type is not valid image (1)"));
}
?>
收到錯誤:
PHP Warning: getimagesize(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in \\xampp\\htdocs\\index.php on line 3, referer: https://webtest.test/
PHP Warning: getimagesize(): Failed to enable crypto in \\xampp\\htdocs\\index.php on line 3, referer: https://webtest.test/
PHP Warning: getimagesize(https://webtest.test/content/uploads/photos/2019/08/2f203cfc1e.jpg): failed to open stream: operation failed in \\xampp\\htdocs\\index.php on line 3, referer: https://webtest.test/
Xampp/PHP 版本 7.3.6。 加載的模塊:
core mod_win32 mpm_winnt http_core mod_so mod_access_compat mod_actions mod_alias mod_allowmethods mod_asis mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dav_lock mod_dir mod_env mod_headers mod_include mod_info mod_isapi mod_log_config mod_cache_disk mod_mime mod_negotiation mod_proxy mod_proxy_ajp mod_rewrite mod_setenvif mod_socache_shmcb mod_ssl mod_status mod_php7
問題可能來自哪里,如何解決?
如果您嘗試從自己的服務器圖像目錄獲取圖像大小,則可以使用base_path
而不是url().'pathtoyourimage'
。
將 CA 包添加到 Apache SSL 可以解決這個問題。
SSLCertificateChainFile /etc/apache2/ssl/My_CA_Bundle.ca-bundle
我使用庫html2pdf
遇到了同樣的問題,該庫需要通過PHP函數getsizeimage()
獲取圖像大小,而我的圖像URL是https
因此我通過在php.ini
文件中指定SSL證書來解決。
[openssl]
openssl.cafile="/etc/nginx/tls/yourCert.crt"
只有一種方式正確!
對於 apache2 + php:在文件 php.ini -> [openssl] -> openssl.cafile= /etc/ssl/chain/YOURDOMAIN.COM/yourCAchain.crt 中設置為 CAcerteficate
當您收到此錯誤時:
getimagesize(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
你可以這樣解決:
list($w,$h) = getimagesize(ROOTINDEX."admin/upload/post-images/".$value['post_image']);
所以你可以這樣寫:
list($w,$h) = (ROOTINDEX."admin/upload/post-images/".$value['post_image']);
你的代碼將被執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.