Help us understand the problem. What is going on with this article?

php7ccを利用したPHP5.6⇒PHP7へのコンバージョンチェック

More than 1 year has passed since last update.

php7ccを利用したPHP5.6⇒PHP7へのコンバージョンチェック

EC-CUBE関連のシステム開発で、PHP5.6からPHP7へのコンバージョンが必要かもしれない。ということがあったため、
その時の作業メモを残したいと思います。
PHP5系はそもそも現時点(2018/4/17時点)ではすでにサポートが切れており、セキュリティパッチなどが公開されないバージョンとなっています。
しかし、PHP界隈では多く利用されてきたバージョンということもあり、バージョンアップには四苦八苦することも多いのではないでしょうか。

php7ccを利用してコンバージョンチェックを実施

以下の記事を参考にコンバージョンチェックを実施しました。
PHP7の互換性チェック

php7ccの結果まとめ及びその対処方法の参考

この実施結果の出力ログを、DISTINCTしてエラー内容を一覧にまとめたのが、下表です。
参考情報としてまとめたものなので、不備などがあるかと思いますが、いろいろ調べた結果をログとして残しておこうと思い、表にまとめています。

エラーログ種類 概要/対処方法
1 [Error] Bitwise shift by 7128 bits 不明
2 [Error] break not in the loop or switch context 不要な箇所にbreakが指定されている
3 [Error] Class/trait/interface "Error" was added in the global namespace Errorという名前空間は予約語であるため使用できない。
4 [Error] Duplicate function parameter name "owner" 引数に指定されるパラメータ名が重複しているためエラー。
5 [Error] Name "object" that is reserved for future use (does not cause an error in PHP 7) used as a use statement alias "object"が予約語なためエラー。
6 [Error] PHP 4 constructors are now deprecated コンストラクタは「__construct()」にしないとエラー。
7 [Error] Removed "HTTP_RAW_POST_DATA" variable used この機能は PHP 5.6.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。$HTTP_RAW_POST_DATA の代わりに、 php://input を使うべきです。
8 [Error] Removed argument $is_dst used for function "gmmktime" gmmktime関数のis_dst引数は、PHP7.0.0で削除されました。
9 [Error] Removed argument $is_dst used for function "mktime" mktime関数のis_dst引数は、PHP7.0.0で削除されました。
10 [Error] Removed function "ereg" called erep関数は削除されました。代替関数としてpreg_match()を利用する。
11 [Error] Removed function "ereg_replace" called ereg_replace関数は削除されました。preg_replaceに置き換えることで対応可能。
12 [Error] Removed function "EregI" called eregi関数は削除されました。この関数の代替として、これらが使えます。preg_match() (i (PCRE_CASELESS) 修飾子を使う)
13 [Error] Removed function "eregi_replace" called eregi_replace関数は削除されました。この関数の代替として、これらが使えます。preg_replace() (with the i (PCRE_CASELESS) modifier)
14 [Error] Removed function "mssql_bind" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::bindParam()PDOStatement::bindValue()sqlsrv_prepare()odbc_prepare()
15 [Error] Removed function "mssql_close" called この関数は削除されました。この関数の代替として、これらが使えます。sqlsrv_close()odbc_close()odbc_close_all()
16 [Error] Removed function "mssql_connect" called この関数は削除されました。この関数の代替として、これらが使えます。PDO::_construct()sqlsrv_connect()odbcconnect()
17 [Error] Removed function "mssql_data_seek" called この関数は削除されました。この関数の代替として、これらが使えます。PDO_SQLSRV、 PDO_ODBC、 SQLSRV あるいは unified ODBC ドライバ で発行したクエリで OFFSET 句を使う
18 [Error] Removed function "mssql_execute" called この関数は削除されました。この関数の代替として、これらが使えます。PDO_SQLSRV、 PDO_ODBC、 SQLSRV あるいは unified ODBC ドライバ で EXEC クエリを発行する
19 [Error] Removed function "mssql_fetch_array" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::fetch()sqlsrv_fetch_array()odbc_fetch_array()
20 [Error] Removed function "mssql_fetch_assoc" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::fetch()sqlsrv_fetch_array()odbc_fetch_array()
21 [Error] Removed function "mssql_fetch_field" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::getColumnMeta()sqlsrv_field_metadata()unified ODBC ドライバ の odbc_field_* 関数群
22 [Error] Removed function "mssql_fetch_row" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::fetch()sqlsrv_fetch_array()odbc_fetch_row()
23 [Error] Removed function "mssql_field_length" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::getColumnMeta()sqlsrv_field_metadata()odbc_field_len()
24 [Error] Removed function "mssql_field_name" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::getColumnMeta()sqlsrv_field_metadata()odbc_field_name()
25 [Error] Removed function "mssql_field_type" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::getColumnMeta()sqlsrv_field_metadata()odbc_field_type()
26 [Error] Removed function "mssql_free_result" called この関数は削除されました。この関数の代替として、これらが使えます。odbc_free_result()
27 [Error] Removed function "mssql_get_last_message" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::errorInfo()sqlsrv_errors()odbc_errormsg()
28 [Error] Removed function "mssql_init" called この関数は削除されました。この関数の代替として、これらが使えます。PDO_SQLSRV、 PDO_ODBC、 SQLSRV あるいは unified ODBC ドライバ で EXEC クエリを発行する
29 [Error] Removed function "mssql_next_result" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::nextRowset()sqlsrv_next_result()odbc_next_result()
30 [Error] Removed function "mssql_num_fields" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::columnCount()sqlsrv_num_fields()odbc_num_fields()
31 [Error] Removed function "mssql_num_rows" called この関数は削除されました。この関数の代替として、これらが使えます。PDOStatement::rowCount()sqlsrv_num_rows()odbc_num_rows()
32 [Error] Removed function "mssql_pconnect" called この関数は削除されました。この関数の代替として、これらが使えます。PDO::_construct()sqlsrv_connect()odbcpconnect()
33 [Error] Removed function "mssql_query" called この関数は削除されました。この関数の代替として、これらが使えます。PDO::query()sqlsrv_query()odbc_exec()
34 [Error] Removed function "mssql_select_db" called この関数は削除されました。この関数の代替として、これらが使えます。PDO_SQLSRV DSNPDO_ODBC DSNsqlsrv_connect()odbc_connect()
35 [Error] Removed function "mysql_affected_rows" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_affected_rows()PDOStatement::rowCount()
36 [Error] Removed function "mysql_close" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_close()PDO: PDO オブジェクトへの NULL の代入
37 [Error] Removed function "mysql_connect" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_connect()PDO::__construct()
38 [Error] Removed function "mysql_data_seek" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_data_seek()PDO::FETCH_ORI_ABS
39 [Error] Removed function "mysql_errno" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_errno()PDO::errorCode()
40 [Error] Removed function "mysql_error" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_error()PDO::errorInfo()
41 [Error] Removed function "mysql_escape_string" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_escape_string()PDO::quote()$q = mysql_escape_string( $q );    ↓$mysqli = new mysqli('サーバ名', 'ユーザー名','パスワード', 'DB名');$q = $mysqli->real_escape_string( $q );
42 [Error] Removed function "mysql_fetch_array" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_array()PDOStatement::fetch()
43 [Error] Removed function "mysql_fetch_field" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field()PDOStatement::getColumnMeta()
44 [Error] Removed function "mysql_fetch_row" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_row()PDOStatement::fetch(PDO::FETCH_NUM)
45 [Error] Removed function "mysql_field_flags" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field_direct() [flags]PDOStatement::getColumnMeta() [flags]
46 [Error] Removed function "mysql_field_len" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field_direct() [length]PDOStatement::getColumnMeta() [len]
47 [Error] Removed function "mysql_field_name" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field_direct() [name] あるいは [orgname]PDOStatement::getColumnMeta() [name]
48 [Error] Removed function "mysql_field_table" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field_direct() [table] あるいは [orgtable]PDOStatement::getColumnMeta() [table]
49 [Error] Removed function "mysql_field_type" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_fetch_field_direct() [type]PDOStatement::getColumnMeta() [driver:decl_type] あるいは [pdo_type]
50 [Error] Removed function "mysql_free_result" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_free_result()NULL を PDO オブジェクトに代入、あるいは PDOStatement::closeCursor()
51 [Error] Removed function "mysql_insert_id" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_insert_id()PDO::lastInsertId()
52 [Error] Removed function "mysql_list_dbs" called この関数は削除されました。この関数の代替として、これらが使えます。SQL クエリー: SHOW DATABASES
53 [Error] Removed function "mysql_list_fields" called この関数は削除されました。この関数の代替として、これらが使えます。SQL クエリー: SHOW COLUMNS FROM sometable
54 [Error] Removed function "mysql_num_fields" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_num_fields()PDOStatement::columnCount()
55 [Error] Removed function "mysql_num_rows" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_num_rows()mysqli_stmt_num_rows()PDOStatement::rowCount()
56 [Error] Removed function "mysql_pconnect" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_connect() にホストプレフィックス p: を指定PDO::_construct() のドライバオプションで PDO::ATTRPERSISTENT を指定
57 [Error] Removed function "mysql_query" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_query()PDO::query()
58 [Error] Removed function "mysql_real_escape_string" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_real_escape_string()PDO::quote()
59 [Error] Removed function "mysql_select_db" called この関数は削除されました。この関数の代替として、これらが使えます。mysqli_select_db()PDO::__construct() (dsn で指定)
60 [Error] Removed function "mysql_tablename" called この関数は削除されました。この関数の代替として、これらが使えます。SQL クエリー: SHOW TABLES
61 [Error] Removed function "mysql_unbuffered_query" called この関数は削除されました。この関数の代替として、これらが使えます。Buffered and Unbuffered queries を参照
62 [Error] Removed function "set_magic_quotes_runtime" called magic_quotes_runtime の現在アクティブな設定をセットするこの関数は PHP 5.3.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。これは削除(コメントアウト)するだけでOK。set_magic_quotes_runtime(true);    ↓// set_magic_quotes_runtime(true);
63 [Error] Removed function "split" called この関数は削除されました。この関数の代替として、これらが使えます。preg_split()explode()str_split()
64 [Error] Removed regular expression modifier "e" used 不明
65 [Error] Result of new is assigned by reference 不明
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした