絖綛 N@i.jp  昨日:00051060
 今日:00031237
 総計:00134604
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:03/21 19:08


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

PHP5.6 が EOL(4)

少しでも移行が楽になるよう、php7ccをインストールしてみた


 PHP5.6からPHP7へ移行する際の修正として、このBlogの場合は以下の項目がありそうだ。

  • MySQL拡張(mysql関数)をMySQLi拡張(mysqli関数)に変更
  • ereg()関数をpreg_match()関数に変更
  • 短縮形式タグ "<? ?>" は非推奨のため使用を止める("<?=$変数名?>"は使っても良いようだ)

 PHP7で削除された機能は他にも色々あるので、漏れがないよう全ての修正箇所を洗い出しておきたい。という事で、php7cc という互換性チェックツールを使ってみることにした。
 しかし、php7cc をダウンロードしてインストールという簡単なものではなかった。先ず、PHPのパッケージ管理ツールの Composer というものをインストールする必要があり、Composer を使って php7cc をインストールするという流れになる。

1) Composerのインストール

 Composer のインストール手順はDownload Composerに従った。

$ /usr/local/php5/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ /usr/local/php5/bin/php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
$ /usr/local/php5/bin/php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 1.8.3) successfully installed to: /Users/hoge/composer.phar
Use it: php composer.phar

$ /usr/local/php5/bin/php -r "unlink('composer-setup.php');"

この後、"composer.phar" をPATHが通っている場所(例えば"/usr/local/bin/"など)にコピーしておくと良いとのことだが、今回は php7cc をインストールしたいだけなので、このまま使用することにする。

2) php7ccのインストール

$ PATH="/usr/local/php5/bin:$PATH"; ./composer.phar global require sstalle/php7cc
Changed current directory to /Users/hoge/.composer
Using version ^1.2 for sstalle/php7cc
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 10 installs, 0 updates, 0 removals
  - Installing bcncommerce/json-stream (0.3.0): Downloading (100%)
  - Installing nikic/php-parser (v1.4.1): Downloading (100%)
  - Installing psr/container (1.0.0): Downloading (100%)
  - Installing pimple/pimple (v3.2.3): Downloading (100%)
  - Installing symfony/finder (v3.4.21): Downloading (100%)
  - Installing psr/log (1.1.0): Downloading (100%)
  - Installing symfony/debug (v3.4.21): Downloading (100%)
  - Installing symfony/polyfill-mbstring (v1.10.0): Downloading (100%)
  - Installing symfony/console (v3.4.21): Downloading (100%)
  - Installing sstalle/php7cc (1.2.1): Downloading (100%)
symfony/console suggests installing psr/log-implementation (For using the console logger)
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
Package sstalle/php7cc is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files

インストールが成功すると、"~/.composer/vendor/bin"の配下に php7cc があるので、ここへPATHを通す。

$ ls -l ~/.composer/vendor/bin
lrwxr-xr-x   1 hoge  hoge  28  2  2 19:53 php7cc -> ../sstalle/php7cc/bin/php7cc
$ export PATH="~/.composer/vendor/bin:/usr/local/php5/bin:$PATH"

これで php7ccが使えるようになる。使用方法は、

$ php7cc --help
Usage:
  php7cc [options] [--] <paths> (<paths>)...

Arguments:
  paths                                Which file or directory do you want to check?

Options:
  -e, --extensions[=EXTENSIONS]        Which file extensions do you want to check (separate multiple extensions with commas)? [default: "php"]
  -x, --except[=EXCEPT]                Excluded files and directories (multiple values allowed)
  -l, --level=LEVEL                    Only show messages having this or higher severity level (can be info, message or warning) [default: "info"]
  -r, --relative-paths                 Output paths relative to a checked directory instead of full paths to files
      --integer-size=INTEGER-SIZE      Target system's integer size in bits (needed for bitwise shift checks) [default: 32]
  -o, --output-format[=OUTPUT-FORMAT]  Output format (plain, json) [default: "plain"]
  -h, --help                           Display this help message
  -q, --quiet                          Do not output any message
  -V, --version                        Display this application version
      --ansi                           Force ANSI output
      --no-ansi                        Disable ANSI output
  -n, --no-interaction                 Do not ask any interactive question
  -v|vv|vvv, --verbose                 Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Checks PHP 5.3 - 5.6 code for compatibility with PHP7

3) php7ccを使ってみる

$ php7cc admin include module object

File: /Users/hoge/Sites/module/counter.php
> Line 19: [Error] Removed function "eregi" called
    eregi('nava21.ne.jp', gethostbyaddr($_SERVER['REMOTE_ADDR']));

Checked 81 files in 16.289 seconds

php7cc のパラメタに、phpファイルやphpファイルが入っているディレクトリを複数指定して一気にチェックすることができる。こんな風に検出した互換性の問題が表示され、最後にチェックしたファイル数とかかった時間が表示される。


< 過去の記事 [ 2月の 全てのカテゴリ リスト ] 新しい記事 >

2019 calendar
2月
12
3456789
10111213141516
17181920212223
2425262728


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.