【发布时间】:2013-11-01 15:00:10
【问题描述】:
我很困惑为什么这两个东西是或看起来是相互排斥的,并且想知道是否有办法在 PHP-5.4 上同时使用这两者。尝试设置此选项,我收到以下错误:
curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set
我正在使用需要设置 CURLOPT_FOLLOWLOCATION 的 MailChimp API 库。重定向可能会发生,应该遵循,这就是互联网的工作方式。
我也在域上使用 open_basedir。我想围住网站能够访问的目录。这只是一个安全的东西,以及安全带和其他安全措施。
那么,有什么方法可以同时使用它们吗?我希望 CURL 遵循重定向,但也保持 PHP 脚本对已定义目录的本地文件访问。我见过的唯一一种攻击这个问题的方法是在重定向之后模拟 CURL,但这看起来很笨拙,那么 CURL 已经被设计为这样做了。
编辑:
如果不清楚,这是我正在使用的包中抛出错误的行:
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
IMO PHP 保护过度,它应该允许我这样做。那么有没有办法 - 无需破解/分叉这个包 - 告诉 PHP,“看,我知道我在这里做什么”?
我已将其作为包开发人员的问题提出,但迄今为止尚未得到回复。如果包支持传输层的注入,那么我可以通过使用 PHP 的 curl 函数的替代方法来解决它。
【问题讨论】:
-
我发现的大多数线程都只是说“关闭 open_basedir”。好吧,不,我不想那样做。如果最坏的情况发生并且有人进入网站后端,这是我们为降低域之间传播损害的风险而采取的措施之一。
-
也许问题是 curl 通过在 PHP 控制之外的 curl 库中操作绕过了 PHP 中的 open_basedir 设置,而 PHP 只是试图通过阻止我犯错来提供帮助。但是,我相信发送 curl 的 URL,所以这应该是我的决定。我不能告诉 PHP 重定向可以信任,所以“退出”并让我这样做吗? ;-)
-
这个问题似乎是说我不得不破解外部包,这是我想尝试避免的事情:stackoverflow.com/questions/3890631/… 其他博客也提供示例代码来跟踪来自外部的重定向卷曲调用。
标签: php curl mailchimp open-basedir