mktime () looks not deprecated
see
mktime
(PHP 4, PHP 5, PHP 7)
mktime — Get Unix timestamp for a date
PHP 5.3.0 では新しく二つのエラーレベルが加わりました。
E_DEPRECATED
と E_USER_DEPRECATED
です。
E_DEPRECATED
エラーレベルは、
特定の機能が推奨されないことを示すのに使います。
E_USER_DEPRECATED
エラーレベルは、ユーザー定義のコードで推奨されない機能、たとえば
E_USER_ERROR
や E_USER_WARNING
のようなものを示すのに使います。
INI ディレクティブで推奨されないものは以下の通りです。
これらのひとつ以上を有効にすると、起動時
E_DEPRECATED
エラーが発生します
推奨されない関数
'i'
修正子を使用します)
'i'
修正子を使用します)
'i'
修正子を使用します)
is_dst
を mktime() に渡すこと。
かわりにタイムゾーン処理用の新しい関数を使用します。
推奨されない機能
mktime () looks not deprecated
see
mktime
(PHP 4, PHP 5, PHP 7)
mktime — Get Unix timestamp for a date
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 ) )
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'
i.e.
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:
$search=array(
"/HTTP_SERVER_VARS/",
"/HTTP_POST_VARS/",
"/HTTP_ENV_VARS/",
"/HTTP_GET_VARS/",
"/HTTP_COOKIE_VARS/",
"/HTTP_SESSION_VARS/",
"/HTTP_POST_FILES/");
$replace=array(
"_SERVER",
"_POST",
"_ENV",
"_GET",
"_COOKIES",
"_SESSION","_FILES");
$content=file_get_contents("somefile.php");
$content=preg_replace($search,$replace,$content);
file_put_contents("somefile.php",$content);
add directory recursion functions, ect.
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:
$_POST
$_GET
$_SERVER
$_ENV
$_COOKIE
$_SESSION