PHP调用时间按引用传递显示不推荐使用E_

PHP调用时间按引用传递显示不推荐使用E_,php,reference,porting,Php,Reference,Porting,根据,E_DEPRECATED将在您使用调用时间按引用传递时抛出 但是,当我在命令行中运行以下代码时,没有错误或任何警告 <?php error_reporting(E_ALL); echo PHP_VERSION, "\n"; // print 5.3.10-1ubuntu2ppa6~lucid function test($string) { $string = 'bar'; } $a = 'foo'; test(&$a); echo $a; // print

根据,E_DEPRECATED将在您使用调用时间按引用传递时抛出

但是,当我在命令行中运行以下代码时,没有错误或任何警告

<?php

error_reporting(E_ALL);

echo PHP_VERSION, "\n"; // print 5.3.10-1ubuntu2ppa6~lucid

function test($string)
{
    $string = 'bar';
}

$a = 'foo';
test(&$a);
echo $a; // print bar

因为在php.ini文件中
允许调用时间传递引用
设置为
true
。设置为
false
以获取错误


编辑:是的,你们说得对,我检查了V5.2.9,它抛出了警告,根据文档,它应该在V5.3.x,但它没有。这似乎是一个bug,错误消息是编译时错误。您正在使用在错误产生后执行的
error\u reporting()
函数在运行时设置错误报告级别

最好是在
php.ini
中设置
error\u级别。如果您不能这样做,这意味着您应该设置一个本地开发环境,因为这个错误级别不应该显示在生产系统上

同样有效的方法是将其拆分为多个文件,比如

a、 php:

<?php
error_reporting(-1);
include 'b.php';
?>

b、 php:

<?php
/* ... */ 
test(&a);
/*... */
?>


此后,a.php中的
错误报告将在编译b.php之前执行

检查您的php.ini。您的错误报告是否打开?是的,您是对的,因此如果我无法更改php.ini,我也无法强制执行它?@Ryan:在命令行上,您可以指定自己的php.ini路径和/或使用
-d
开关设置ini指令(也可以多次使用):这不是第一手答案,而是猜测。当我读到Ryan的反馈时,你的猜测是错误的:(是的,我明白了,但我不理解编辑。你认为什么是错误?应该在哪个软件中找到错误?@hakre,PHP5.3.x应该作为OP的例子而被弃用。它应该发出关于通过引用调用的警告,但不管
允许调用时间\u传递\u引用
on
还是<代码> OX。我用PHP5.2.9进行了测试,它是真的并抛出警告。所以它应该是PHP 5.3.XI中的一个错误。但是,抱歉,你所说的是PHP 5.2和5.3之间的错误报告行为不同吗?你认为这是一个bug吗?是的,当PHP声称它应该发出警告时,它并没有,在我看来。这是一只虫子。