search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

php5.4.x系からphp7.x系への作業まとめ

最近久々にサーバーのリプレースに伴ってプログラムをphp5からphp7に上げる必要があり、再度調べたりしたので、今まであった修正を今後のためにまとめておきます。
ちなみに以下のような状況です。

  • 複数クライアントに展開しているASPの保守を担当
  • フレームワークは基本的にはfuelphpを使用、でも他社作成のコードの保守を行うこともある
  • 未だphp5環境のサーバーで動かしているクライアントがいるので、php5環境でも動作は保証したい
  • でも、一部php7に上げているクライアントがいるのでphp7対応にする必要がある
  • php5.4系からのアップグレードが多い

新しいオブジェクトを参照渡しで代入できない

自社開発のコードでは出会ったことがないですが、外部ライブラリ使っているとよくあります。
以下のようなコード。

class C {}
$c =& new C;

Parse error: syntax error, unexpected 'new' (T_NEW) in ***** と怒られます。

下位互換性のないその他の変更に記載があります。

countの引数にcountable ではない型を渡せない

これも自社開発のコードでは発生した記憶がないです。

count(null);

とかするとWarning: count(): Parameter must be an array or an object that implements Countableと怒られます。

php7.2の変更点に記載があります。

cURLでファイルをポストする時のオプションが違う

正確には、php5.6以上かそれ未満かでオプションが違う、というものです。
5.4系でも動くように作成したら、php7環境で動きませんでした。

以下の記事を参考にして対応しました。
こんな機会はなかなか無いとは思いますが・・・。
(参考)PHP: VER5.6以降 cURLでファイルをポストする

fuelphp1.8の場合に必要だった作業(おまけ)

1.8.2では対応されています。
(参考)PHP7.2でFuelPHPがエラーになるのを何とかする

PHP 5.4 系だと発生するエラー(おまけ)

empty()の引数に関数を渡す

php5.4以前に以下のような式を書くとエラーで怒られます。
php7からさわり始めた人はこのエラーに遭遇しやすいかも。

empty(trim($name))

emptyのパラメーターの説明にも記載があります。
empty() が任意の式に対応にもあるように、php5.5から引数渡せるようになってます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1