gpt4 book ai didi

PHP: CURLOPT_FOLLOWLOCATION 和 open_basedir 可以一起使用吗?

转载 作者:可可西里 更新时间:2023-11-01 01:02:38 26 4
gpt4 key购买 nike

我很困惑为什么这两个东西相互排斥,或者看起来相互排斥,想知道是否有办法在 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 保护过度,它应该允许我这样做。那么有没有办法 - 无需破解/ fork 这个包 - 告诉 PHP,“看,我知道我在这里做什么”?

我已将其作为问题提交给软件包开发人员,但迄今为止尚未得到答复。如果包支持注入(inject)传输层,那么我可以通过使用 PHP 的 curl 函数的替代方法来解决它。

最佳答案

我要撤回这个问题,因为它似乎让人感到困惑(编辑:抱歉,听起来居高临下,这不是故意的;我没有正确解释这个问题,以及我和其他人对任何建议的解决方案)。

答案似乎是,“不,你不能那样做”。 PHP curl (curl_setopt) 上的 CURLOPT_FOLLOWLOCATION 选项和 php.ini 中的 open_basedir 选项基本上是不兼容的,并且没有编程方式使它们一起工作。

我将 fork 第三方包,用代码中的手动重定向解决方法替换 CURLOPT_FOLLOWLOCATION 选项,SO 上有几个示例。我也会继续插入软件包开发人员修复此错误。

感谢您花时间回复。

编辑:这里真正的问题是 PHP 由于 10 年前提出的错误而强加的钝器解决方案:

https://bugs.php.net/bug.php?id=30609

问题出在 curl 库中 - 如果 PHP 告诉它不允许,则不应允许它深入本地文件系统(除了 open_basedir 目录)。由于 curl 和 PHP 整整十年都没有聚在一起解决这个问题,所以是时候停止使用 curl 了——它不符合目的。海事组织。

关于PHP: CURLOPT_FOLLOWLOCATION 和 open_basedir 可以一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19539922/

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