我切换到PHP 5.6.0,现在到处都收到以下警告:
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0 Warning: Cannot modify header information - headers already sent in Unknown on line 0
很好,我依靠一些不推荐使用的功能。除了 我不知道!
phpinfo()
always_populate_raw_post_data
我不想通过将此值设置为-1来“避免警告”。这只会隐藏警告,而我仍将弃用配置。我想从HTTP_RAW_POST_DATA根本上解决问题,并且知道PHP为什么认为填充已打开。
HTTP_RAW_POST_DATA
事实证明,我对错误消息的理解是错误的。我会说它的单词选择能力很差。环顾四周,向我展示了其他人完全像我一样误解了该消息-请参阅PHPbug#66763。
完全无济于事之后,“这就是客户经理想要的方式。” 针对Mike的错误,Tyrael解释说,将其设置为“ -1”并不仅会使警告消失。它做 正确的事情 ,也就是说,它完全禁用填充的罪魁祸首变量。事实证明,在某些情况下,将其设置为0 仍可 填充数据。谈论糟糕的设计!引用PHP RFC:
更改always_populate_raw_post_data INI设置以接受三个值,而不是两个。 -1:主人的行为;永远不要填充$ GLOBALS [HTTP_RAW_POST_DATA] 0 /关闭/任何:BC行为(如果未注册content-type或请求方法不是POST,则填充) 1 / on / yes / true:BC行为(始终填充$ GLOBALS [HTTP_RAW_POST_DATA])
更改always_populate_raw_post_data INI设置以接受三个值,而不是两个。
因此,是的,将其设置为-1不仅可以避免警告(如消息所述),而且还 最终禁止 填充此变量,这正是我想要的。