PHP 5.6.16 is available

PHP 5.3.x 中弃用的功能

PHP 5.3.0 新增了两个错误等级: E_DEPRECATEDE_USER_DEPRECATED. 错误等级 E_DEPRECATED 被用来说明一个函数或者功能已经被弃用. E_USER_DEPRECATED 等级目的在于表明用户代码中的弃用功能, 类似于 E_USER_ERRORE_USER_WARNING 等级.

下面是被弃用的 INI 指令列表. 使用下面任何指令都将导致 E_DEPRECATED 错误.



  • 弃用通过引用分配 new 的返回值.
  • 调用时传递引用被弃用.
add a note add a note

User Contributed Notes 3 notes

shad at shartley dot net
5 years ago
Correction on my previous note.

sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' {} \;

will screw up multiple instances of $HTTP_*_VARS in the file.

You'll have to use an instance of sed like:

sed -i 's/\$HTTP_SERVER_VARS/\$_SERVER/g'
find ./ -name "*.php" -exec sed -i 's/\$HTTP_POST_VARS/\$_POST/g' {} \;
find ./ -name "*.php" -exec sed -i 's/\$HTTP_GET_VARS/\$_GET/g' {} \;

for each of the deprecated variables you might have in your files.

It also occurred to me a simple php conversion script would also work:


add directory recursion functions, ect.
5 years ago
A backward compatibility break which is not documented:

Fatal error: Uncaught exception 'RuntimeException' with message 'Directory name must not be empty.'

This happens with new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $staticPath ) )
shad at shartley dot net
5 years ago
If you previously defined register_long_arrays in php.ini and have a lot of code with $HTTP_*_VARS that need to be replaced the following may help on *.nix systems:

sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' filename.php

What this command does is replace all occurrences of $HTTP_*_VARS with their respective $_ counter parts, e.g. $HTTP_COOKIES_VAR to $_COOKIES

To replace alot of files, you might combine it with the find command: 
find ./ -name "*.php" -exec sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' {} \;

For other deprecated variables like $HTTP_POST_FILES change your sed arguments:

sed -i 's/\$HTTP_POST_FILES/\$_FILES/g'

Deprecated variables created by the register_long_arrays directive as far as I know are:
To Top