Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php错误输出是如何进入SQL查询的。。?_Php_Mysql - Fatal编程技术网

php错误输出是如何进入SQL查询的。。?

php错误输出是如何进入SQL查询的。。?,php,mysql,Php,Mysql,上下文是:我们刚刚将生产服务器上使用的php从5.2更新为5.3 在某种程度上,它催生了一大群E_反对的错误 问题是:不知何故,E_不推荐错误的文本进入了SQL查询,导致了Mysqli异常(具体地说,是Mysqli准备错误)。该错误是在核心库中发出的,而SQL查询是在使用该库的项目中生成的 该查询类似于: SELECT foo FROM some_table WHERE id IN (1,2,3,4,5 Deprecated: Assigning the return value of new

上下文是:我们刚刚将生产服务器上使用的php从5.2更新为5.3 在某种程度上,它催生了一大群E_反对的错误

问题是:不知何故,E_不推荐错误的文本进入了SQL查询,导致了Mysqli异常(具体地说,是Mysqli准备错误)。该错误是在核心库中发出的,而SQL查询是在使用该库的项目中生成的

该查询类似于:

SELECT foo 
FROM some_table
WHERE id IN (1,2,3,4,5
Deprecated: Assigning the return value of new by reference is deprecated in some_file.php on line NN

Deprecated: Assigning the return value of new by reference is de,6,7,8,9)

问题:这怎么可能发生?

真的不知道,你的代码是否使用了ob_*函数(比如ob_start()、ob_end_flush())

或者您的代码是否使用了一些自定义错误处理函数?您的错误处理程序中名为的变量不可能用于生成sql查询吗


发布一些代码,这样我们可以提供帮助,而不是疑惑

真的不知道,您的代码是否使用了ob_*函数(如ob_start()、ob_end_flush())

或者您的代码是否使用了一些自定义错误处理函数?您的错误处理程序中名为的变量不可能用于生成sql查询吗

发布一些代码,这样我们可以提供帮助,而不是疑惑

您确定这都是同一错误消息的一部分吗?如果同时有多个PHP进程写入同一个日志文件,则可能有一个进程写入的警告警告消息插入到由另一个进程编写的SQL错误消息的中间。 (理论上,如果日志文件以追加模式正确打开,并且每条消息都是使用单个原子I/O调用编写的,那么这是不可能的,但在实践中,有几十种情况可能会导致违反原子性假设。从技术上讲,这将构成PHP中的一个错误,但在al下可能很难可靠地修复(环境)

每秒记录的消息越多,发生这种情况的风险就越高,因此升级会导致“大量”新的警告消息(可能会以密集的突发方式发出)是这样的巧合。

你确定这是同一个错误消息的一部分吗?如果你同时有多个PHP进程写入同一个日志文件,那么一个进程写的一个弃权警告消息可能会被插入到一个SQL错误消息令牌的中间。通过另一个过程得到十个

(理论上,如果日志文件以追加模式正确打开,并且每条消息都是使用单个原子I/O调用编写的,那么这是不可能的,但在实践中,有几十种情况可能会导致违反原子性假设。从技术上讲,这将构成PHP中的一个错误,但在al下可能很难可靠地修复(环境)


每秒记录的消息越多,发生这种情况的风险就越高,因此升级导致的“一大群”新警告消息(可能以密集的突发方式发出)正是可能触发这种巧合的原因。

是“猜我的代码看起来像什么”吗我假设你先升级你的测试/开发服务器,以确保一切正常?问题是,我不愿意发布任何真实的代码,因为根据我的合同,雇主可以为此对我罚款。而且,没有开发服务器,一切都很好。这只发生在生产服务器上是出于某种原因。我不是完美无缺我确信它们100%相似。更像是80-90%,我想…这是一个“猜测我的代码是什么样子的”constest?:)我假设你首先升级了测试/开发服务器,以确保一切正常?问题是,我不愿意发布任何真实的代码,因为根据我的合同,雇主可以为此罚款我。此外,在dev服务器上一切正常。由于某种原因,这只发生在生产服务器上。我不能完全确定它们是否100%相似。大概是80-90%,我想…谢谢你这么长时间后的回复。不幸的是,我不再在那家公司工作了,所以我不能给出任何细节。我唯一记得的是,我们在dev和prod服务器上都使用了xdebug。据我所知,如果有人使用调试环境,php错误会被转储到网页中。此外,探查器在页面底部编写了有关数据库查询的信息。很可能是网页中的调试信息被篡改了。实际上,您的假设似乎很有可能,但第一个答案看起来也不错,因为我们确实使用了自定义错误处理程序;)。2年前,在我发布问题后不久,这个bug不知何故被根除了,我有很多任务在排队,所以我没有在这个问题上花费太多时间。@Exander:噢,哇,我完全忽略了这个问题太老的事实。哦,很可能有一天有人会遇到类似的问题,谷歌也会解决。谢谢你这么长时间后的回复。不幸的是,我不再在那家公司工作了,所以我不能给出任何细节。我唯一记得的是,我们在dev和prod服务器上都使用了xdebug。据我所知,如果有人使用调试环境,php错误会被转储到网页中。此外,探查器在页面底部编写了有关数据库查询的信息。很可能是网页中的调试信息被篡改了。实际上,您的假设似乎很有可能,但第一个答案看起来也不错,因为我们确实使用了自定义错误处理程序;)。2年前,在我发布问题后不久,这个bug不知何故被根除了,我有很多任务在排队,所以我没有在这个问题上花费太多时间。@Exander:噢,哇,我完全忽略了这个问题太老的事实。哦,很可能有一天,有人会遇到类似的问题,谷歌也会解决。