Php Apache无法使用curl发出传出HTTP请求
考虑以下系统配置:Php Apache无法使用curl发出传出HTTP请求,php,apache,curl,selinux,php-curl,Php,Apache,Curl,Selinux,Php Curl,考虑以下系统配置: 软呢帽27 SELinux已启用 Apache/2.4.33 PHP 7.1.17 以及以下代码段,用于向发出http请求: 当我运行以下CLI时,上面的脚本可以完全正常工作: php script.php 我得到了预期的输出 但是,当我尝试通过web浏览器运行它时,它会生成: CURLE\u无法\u CONNECT(7)无法将()连接到主机或代理 我发现了很多建议,比如添加 curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESO
- 软呢帽27
- SELinux已启用
- Apache/2.4.33
- PHP 7.1.17
php script.php
我得到了预期的输出
但是,当我尝试通过web浏览器运行它时,它会生成:
CURLE\u无法\u CONNECT(7)无法将()连接到主机或代理
我发现了很多建议,比如添加
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
这对我来说不是一个真正的解决办法。关闭SELinux,我将不关闭该选项
注意:当我发布URL时,它本身工作正常,并提供了预期的输出
有什么建议吗?提前感谢。尝试此操作,看看SELinux是否允许web服务器连接到网络: getsebool httpd_可以_网络_连接 如果没有,请允许使用 setsebool-p httpd_can_网络_连接开启
错误很明显,您能在浏览器中运行该url吗?是的,工作完全正常。
curl\u setopt($ch,CURLOPT\u VERBOSE,true)代码>添加它,看看你是否得到了什么有用的东西实际上什么都没有。同样的问题,Fedora29,在我查看/var/log/messages
:audit[2320]:AVC AVC:denied{name\u connect}for pid=2320 comm=“php fpm”之前,在任何地方都找不到错误dest=80 scontext=system\u:system\r:httpd\u t:s0 tcontext=system\u:object\u r:http\u port\u t:s0 tclass=tcp\u socket permissive=0
我不会记得SELinux了,非常感谢。这就是我花了几个小时寻找的大海捞针。
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);