gpt4 book ai didi

php - Ubuntu Lamp - 代理 - 防火墙 - Joomla curl 和 fsockopen 无法工作

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:17 25 4
gpt4 key购买 nike

好吧,我已经为此苦苦挣扎了几天。

我在我们网络的本地机器上为我们的内部网安装了 Joomla,还安装了 Jomsocial。

问题是,当我进入站点配置或编辑事件或导航到任何调用外部 api 的 joomla 模块时,我会得到任何一个

CURL error : 7 Failed to connect to maps.google.com port 80: Connection timed out 

Connection timed out (110) 

问题绝对不是 Joomla 或 Jomsocial,我有其他 php 应用程序在同一台服务器上运行,也无法联系外部 api

服务器设置是

Ubuntu 14LtsPHP 5.5 Apache 2.4.7数据库

服务器位于代理后面,但可以从 CLI 完全访问互联网。所有必要的 php 扩展都已启用。我也在 apt config 中的/etc/environment 中设置了全局代理变量,并在 Joomla 中设置了代理变量。我的 Joomla 更新和组件更新工作正常,但 fsockopen 函数的 curl 无法正常工作。

我不知道还能在哪里查找错误。我的想法是 www-data 用户可能没有足够的权限从浏览器执行 fsockopen 和 curl。

有什么建议吗?

更新,我已经在另一台不在公司网络(直接连接到互联网)上的机器上测试了该站点,并且一切正常。所以我很确定我的问题出在我的机器和网络权限上,特别是我的 www-data 用户。我该如何解决这个问题?

最佳答案

看起来 http_proxy 变量没有被 PHP (mod_php) 使用,即使使用 PassEnv 传递它,或者如果它直接用 SetEnv 设置。此外,在 PHP 脚本中调用 getenv('http_proxy') 时也能正确显示。

但是,有两种方法可以让它工作:

  • 在 Apache envvars (/etc/apache2/envvars) 中设置如下:

    export http_proxy=http://proxy.example.com:8080/

    并重新启动 Apache。

  • 放入加载应用程序的 PHP 文件(例如 index.php、bootstrap.php 等):

    putenv('http_proxy=http://proxy.example.com:8080/');

同样,如果您使用 getenv('http_proxy') 进行测试,您将看到它们设置正确。

关于php - Ubuntu Lamp - 代理 - 防火墙 - Joomla curl 和 fsockopen 无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com