根据the doc,当您使用“来电时间传递”
时, 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
答案 0 :(得分:3)
错误消息是编译时错误。您正在使用error_reporting()
函数在运行时设置error_reporting级别,该函数在错误产生后执行。
最好的办法是在error_level
中设置php.ini
。如果你不能这样做,这意味着你应该设置一个本地开发环境,因为这个错误级别不应该在生产系统上显示。
还可以将其拆分为多个文件,例如
a.php只会:
<?php
error_reporting(-1);
include 'b.php';
?>
b.php:
<?php
/* ... */
test(&a);
/*... */
?>
从那以后,a.php中的error_reporting
将在b.php编译之前执行。
答案 1 :(得分:0)
因为allow_call_time_pass_reference
在php.ini文件中设置为true
。设置为false
以获取错误。
编辑:是的,你是对的,我用V5.2.9进行了检查并且它会发出警告,它应该是V5.3.x的文件,但事实并非如此。好像这是一个错误