1

我似乎遇到了标题为PHP 5.6 的博客中描述的问题:“自动填充 $HTTP_RAW_POST_DATA 已被弃用,将在未来的版本中删除。”</a>。从我服务器上 ngrep 的输出中可以看出:

HTTP/1.1 200 OK..Date: Mon, 09 Mar 2015 20:28:06 GMT..Server: Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/1.0.0j DAV/2 PHP/5.6.2..Content-Length: 819..
Keep-Alive: timeout=5, max=100..Connection: Keep-Alive..Content-Type: text/html; charset=UTF-8....<br />.<b>Deprecated</b>:  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 <b>Unknown</b> on line <b>0</b><br />.<br />.<b>Warning</b>:  Cannot modify header information - headers
already sent in <b>Unknown</b> on line <b>0</b><br />.<?xml version="1.0"?>.<methodResponse>.  <params>.    <param>.      <value>.
<array><data>.  <value><struct>.  <member><name>code</name><value><int>2000</int></value></member>.  <member><name>message</name><value><string>
(check  DevKey) - Can not authenticate client: invalid developer key</string></value></member>.</struct></value>.</data></array>.   </value>.
</param>.  </params>.</methodResponse>. 

此消息是 Jenkins TestLink 插件尝试通过 XML-RPC 与 TestLink 通信时返回的内容。您可以清楚地看到已弃用的警告位于 XML 响应之前,这反过来又会导致“修改标头信息”问题。

但是,我没有得到的是我似乎无法抑制这个警告。如果我设置always_populate_raw_post_data = -1它似乎没有效果。我想也许我正在编辑错误的 php.ini 文件,但我遵循了这里的建议并且能够验证我所做的更改是否被服务器拾取。我唯一的理论是 TestLink 在应用程序中覆盖了这些值,但我似乎在我的安装中找不到任何相关的东西。

编辑:一些环境信息:端口 80 上的 Apache 2.2.15-39,使用 MySQL 5.1.73 的 PHP 5.6.6-1 和 TestLink 1.9.13。Tomcat 8.0.20 上的 Jenkins 1.601 在端口 8089 上运行。

如果我仔细查看上面的消息,我会看到PHP/5.6.2,但如果我在我的系统上进行查找,我find / -type f -name php只会得到/usr/bin/php......

4

2 回答 2

0

您还可以将 error_reporting 设置为 E_ALL 和 ~E_DEPRECATED,这样可以防止显示有关弃用的通知。这可以应用在 php.ini 或 Jenkins 的构建配置中。

于 2015-03-09T20:54:56.603 回答
0

好吧,我学到了很多东西,同时深入研究,但事实证明我的错误很简单。我已将某些文档中的 XML-RPC URL 复制到 Jenkins Testlink 插件的配置中,但忘记将其编辑为我的服务器的 URL。

于 2015-03-10T00:07:50.077 回答