I found the reason!
I have check and my files and folders are already with rights: 0755 for
folders and 0644 for files.
I checked also the owner of the website and unfortunately I did some
test and did not resolved the issue.
I have put a file aaa.jpg on my website root folder:
Locally this code is working fine:
list($imageWidth, $imageHeight) =
getimagesize('http://local-mywebsite.com/aaa.jpg');
echo $imageWidth;
So I change the code to:
list($imageWidth, $imageHeight) =
getimagesize('https://mywebsite.com/aaa.jpg');
echo $imageWidth;
and I get the error:
2021/08/04 11:33:00 [error] 2196869#2196869: *388196 FastCGI sent in
stderr: "PHP message: PHP Warning:
getimagesize(https://mywebsite.com/aaa.jpg): failed to open stream: HTTP
request failed! HTTP/1.1 403 Forbidden
I change the right to 0777 to file and still have the 403.
I changed the owner of the file aaa.jpg to www-data and changed the
owner of the website root folder to www-data as well but still have the 403.
On /etc/nginx/nginx.conf file I have:
user www-data;
I didn't know where to look at!
And unexpectedly I remembered that yesterday I added some rules to nginx
to block bad bots. Which I didn't do locally.
I added this configuration rules:
https://github.com/mitchellkrogza/nginx-badbot-blocker
<https://github.com/mitchellkrogza/nginx-badbot-blocker>
And took a look at it and notified this rules:
## Add here all hosts that should be spared any referrer checking.
## Whitelist all your own IPs in this section, each IP followed by a 0;
geo $bad_referer {
127.0.0.1 0;
111.111.111.111 0;
}
I added the comment for 127.0.0.1 and it's now working fine.
What is the line 111.1111.111.111 0 for ?
Do you have any advise on this rules added from
https://github.com/mitchellkrogza/nginx-badbot-blocker ?
Thanks :)
Le 03/08/2021 à 21:14, Vincent M. a écrit :
Hello all,
I have a 403 error when trying to use the PHP function getimagesize on
nginx based web server:
list($imageWidth, $imageHeight) = getimagesize($imagesSource['Main']);
Where $imageSource['Main'] is like:
https://mywebsite/include/php/render/canvas/VR/2/image/U35p/ver//bgColor/ffffff/widthMM/300/heightMM/388/aube-sunny.jpg
It's an image generated by PHP-imagick module and is not locally
available. This image can be opened by a browser with no problem.
To generate this image which go through 404. Nginx is configured like
that:
error_page 404 = /url_rewriting.php;
And in the file url_rewriting.php, we analyse the URL to see if it's
real 404 or an image which must be generated:
if((isset($urlHash[2]) && $urlHash[2] === 'render')) {
...
header('Status: 200 OK', false, 200);
chdir('include/php/render/'.$_GET['render']);
require ('include/php/render/'.$_GET['render'].'/render_img.php');
exit;
}
All is working fine but not the getimagesize from my own server.
What is strange is that it's working fine on my development
environment which has the same versions of nginx and PHP and pretty
the same configuration.
It might a configuration issue or a right issue on a certain file but
I don't know where to check.
Thank you,
Vincent.
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx