有没有什么神奇的工具可以用来扫描为 PHP4 编写的源代码以突出显示 PHP5 中已弃用的函数?我目前正在服务器上运行最新版本的 PHP,需要移植此代码。有什么可以帮助我的吗?
问问题
1552 次
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 的系统上find
,grep
则可以执行如下操作:
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_register
和session_unregister
我自己的实例!
可以对不推荐使用的 INI 指令和参数执行相同的操作。
于 2012-04-25T15:34:59.553 回答