当 file_get_contents 和 always_populate_raw_post_data 被禁用时,php://input 和 $HTTP_RAW_POST_DATA 的替代方案是啥

Posted

技术标签:

【中文标题】当 file_get_contents 和 always_populate_raw_post_data 被禁用时,php://input 和 $HTTP_RAW_POST_DATA 的替代方案是啥【英文标题】:what are the alternatives for php://input and $HTTP_RAW_POST_DATA when file_get_contents and always_populate_raw_post_data are disabled当 file_get_contents 和 always_populate_raw_post_data 被禁用时,php://input 和 $HTTP_RAW_POST_DATA 的替代方案是什么 【发布时间】:2012-04-12 01:37:57 【问题描述】:

我的主机组合禁用了除 curl 之外的所有套接字功能。他们对我启用它的问题如此不负责任。我可以想到另一个托管但我想知道以下内容。

我已经问过一个与此相关的问题,这是一个继续的另一个问题。

我无法使用 file_get_contents('php://input') 并且 always_populate_raw_post_data 在 php.ini 中被禁用,因此我无法使用 $HTTP_RAW_POST_DATA。

那么获取原始帖子数据的替代方法是什么。

例如,我在 facebook 上设置了通知回调 url。因此,一旦有事件发生,facebook 就会将信息发布到我网站的特定 url。

所以我需要从 facebook 读取原始帖子数据,根据上面的描述,我想知道 php://input 和 $HTTP_RAW_POST_DATA 的替代方案。

当一些正文发布到我的网站(包括标题)时,是否可以读取全部内容,以便我可以剥离标题部分并可以使用文章的正文?

是的……当一些body发布任何内容时,我们可以得到完整的内容。

【问题讨论】:

【参考方案1】:

file_get_contents() 被禁用时,您可以使用PEAR::PHP_Compat 的强大功能。它包含file_get_contents() 的替换。

只需download the latest package,将其提取出来并像这样使用它:

require_once '/path/to/PHP_Compat-1.6.0a3/Compat/Function/file_get_contents.php';

$content = php_compat_file_get_contents('http://example.com');

【讨论】:

哈利路亚,eeswaraa ......这工作......哈哈...... semma。谢谢你的信息。 PEAR 包检查实现目标的所有可能方式。如果某些内容受到限制或使用旧版本的 PHP,还有许多其他功能非常有用。

以上是关于当 file_get_contents 和 always_populate_raw_post_data 被禁用时,php://input 和 $HTTP_RAW_POST_DATA 的替代方案是啥的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents获取状态码

php 评估后的 PHP file_get_contents

如何解决file_get_contents()函数运行时间过长的问题? - 技术问答

如何处理 PHP 中 file_get_contents() 函数的警告?

使用 file_get_contents 从 url 获取图像

php file_get_contents函数分段读取大记事本或其它文本文件