使用一行代码创建 .test.php 文件:
<?php
var_dump(file_get_contents('https://checkip.amazonaws.com'));
?>
当我从浏览器打开 .test.php 时,它显示 bool(false) 但是当我从命令行运行它时,它按预期显示我的 WAN IP。
php -f .test.php
我正在使用 CentOS 9、nginx 1.20.1 和 PHP 8.1.3(虽然我也尝试过 RHEL8 和 Apache)
我尝试设置/etc/php-fpm.d/www.conf以使用我的用户 ID 和组来确保这不是权限问题。
phpinfo() 显示allow_url_fopen设置为 On 并且 curl 7.76.1 已启用并且 OpenSSL 已启用版本 3.0.1
我还尝试了一个 http: URL
我还尝试在 .php 文件中使用curl()库,这些库以相同的方式失败。
如果调用php -v或另一个 .php 文件,则从 .php 文件调用exec()有效,但如果调用curl则无效
不知道还能尝试什么,所以我可能会再次对整个服务器进行核攻击。
更新:在 /var/log/nginx/error.log 中找到了这个
FastCGI sent in stderr: "PHP message: PHP Warning: file_get_contents(https://checkip.amazonaws.com): Failed to open stream: Permission denied
怎么办?