4

有没有什么神奇的工具可以用来扫描为 PHP4 编写的源代码以突出显示 PHP5 中已弃用的函数?我目前正在服务器上运行最新版本的 PHP,需要移植此代码。有什么可以帮助我的吗?

4

3 回答 3

5

E_DEPRECATED如果您将错误报告级别设置为显示它们,PHP 5.3 将发出警告。

于 2009-07-13T17:39:02.447 回答
1

我想自己做这样的事情。使用PHP 5.3.x 中已弃用的功能列表,我创建了一个正则表达式来搜索这些功能的任何使用:

(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())

(不区分大小写,每个函数名称都包括左括号,以避免误报;“dl”会带来很多噪音。)

如果您在使用 and 的系统上findgrep则可以执行如下操作:

find <directory to search> -type f -name '*.php' -exec grep -R -P -H "<above regex>" {} \;

只是为了举一个更具体的例子,我只是使用了以下内容:

find htdocs -type f -name '*.php' -exec grep -R -P -H "(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())" {} \;

看起来我现在需要替换一些session_registersession_unregister我自己的实例!

可以对不推荐使用的 INI 指令和参数执行相同的操作。

于 2012-04-25T15:34:59.553 回答
0

手册的附录包含一些迁移信息,但我认为它不包含您要查找的内容。

我想到的一种方法(可能不准确但可以使用)是每个 PHP 下载中包含的 news.txt。我正在编写一个脚本atm 来解析这个文件并检查不推荐使用的函数可能是我可以添加的东西。我正在开发另一个项目 atm,但我想在更大的重建版本中为此添加功能。

于 2009-07-13T20:15:54.190 回答