简体   繁体   中英

"getimagesize(): SSL operation failed with code 1" on local Xampp only

getimagesize() fails in Xampp (local PC), although it works fine in the live environment.

Based on the error message, the issue seems related to certificate configuration. I have created self-signed certificates based on this article: https://shellcreeper.com/how-to-create-valid-ssl-in-localhost-for-xampp/

This removed the SSL warning from Apache's error log, but the issue with getimage() is still the same.

If I pass the image's URL with http instead of https , the call works.

<?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)"));
}
?>

Error received:

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 version 7.3.6. Loaded modules:

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 

Where could the problem be coming from, and how to fix it ?

如果您尝试从自己的服务器图像目录获取图像大小,则可以使用base_path而不是url().'pathtoyourimage'

将 CA 包添加到 Apache SSL 可以解决这个问题。

SSLCertificateChainFile /etc/apache2/ssl/My_CA_Bundle.ca-bundle

I had the same problem using the library html2pdf that needs to get the image size through the PHP function getsizeimage() and my image URL was with https so I solved by specifying in my php.ini file the SSL certificate.

[openssl]
openssl.cafile="/etc/nginx/tls/yourCert.crt"

Only one way correct!

For apache2 + php: set to CAcerteficate in file php.ini -> [openssl] -> openssl.cafile= /etc/ssl/chain/YOURDOMAIN.COM/yourCAchain.crt

When you get this error:

getimagesize(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

You can solve it like so:

list($w,$h) = getimagesize(ROOTINDEX."admin/upload/post-images/".$value['post_image']);

So you can write this:

list($w,$h) = (ROOTINDEX."admin/upload/post-images/".$value['post_image']);

And your code will be executed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM