cakePHP3.4とPHP7.2でAPIを作ったら躓いたのでメモ
今回、新規プロジェクトを担当していざ納品前の確認で社内公開せねばというステータスになったら、ローカル環境から開発のサーバーに設置してみて動かないという事態に。。
今回のローカル環境要件
dockerで以下を構築
apache2.4(php7.1 cakePHP3.4)
node.js
mysql5.7なぜこの環境かというと、納品までの時間があまりにもなく既存のプロジェクトを焼き回しで使える部分は使って工数を削減しないとならないということで既存の環境要件に合わせてこちらで開発をスタート
なので既存と同じ環境で作り始めましたうちは開発サーバーからステージングサーバー、本番サーバーはサーバー管理チームに依頼して作ってもらいます
なので、〇〇プロジェクトと同じ構成で!って依頼して作ってもらっていましたさて、慌ただしい開発で納品前の社内確認をということで開発サーバーにソースコードを移して動作確認しよっと!
と思ってソースコードを配置してアクセス!ん?なんかアクセスできないし!!とりあえずエラーログを見る
でとる〜
エラーでとる〜
するとこんなエラーが
PHP Fatal error: Cannot use Crud\\Core\\Object as Object because 'Object' is a special class name in /var/www/html/vendor/friendsofcake/crud/src/Listener/BaseListener.php on line 4, referer: http://domain
どうやらPHP7.2でcrudのバージョンを5以上にしないとダメよってことらしい。。。
〇〇プロジェクトと同じ環境って言ったやん!!
どうやら開発サーバーはリポジトリの標準パッケージのPHP7.2をインストールしたらしい。。
うちのサバ管そういうとこあります。。
こちらの意図を伝えてるのにそうならない。。
まぁねPHP7.1は2019/12/01にセキュリティーサポートも切れるということでまぁしょうがないなということで、取り急ぎは私の判断でPHP7.1にダウングレードして明日の納品前の社内判定は乗り切ろうかなって思い以下を実施
※crudを5にすればいいじゃん?とお思いになる方もいらっしゃるでしょうがこれが5にあげただけではすんなり動いてくれなかったので取り急ぎダウングレードに至りました。。
yum list installed | grep phpこちらでインストール状況を調べて一旦削除
ここで出たリストのやつをアンインストール
それがこちら
yum remove php php-cli php-common php-devel php-fedora-autoloader php-gd php-intl php-json php-mbstring php-mysqlnd php-pdo php-pear php-process php-xml
PHP7.1をインストール
yum install --enablerepo=remi-php71 php php-cli php-common php-devel php-fedora-autoloader php-gd php-intl php-json php-mbstring php-mysqlnd php-pdo php-pear php-process php-xml
※ちなみにremiリポジトリがある前提です
php7.1に切り替える実行コマンドがこちらに書いてあります
/opt/remi/php71/enable
export PATH=/opt/remi/php71/root/usr/bin:/opt/remi/php71/root/usr/sbin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/remi/php71/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/remi/php71/root/usr/share/man:${MANPATH}
こちらにも記述して完了
vim ~/.bash_profile
取り急ぎは動かしたのでPHP7.2で今度は対応します。そのの対応はまた後日!
コメント
コメントを投稿