原因
文字通りメモリ不足です。
つまりメモリがあれば良いわけなのですが、ロリポップではメモリを上限に設定してもPHP Fatal error: Out of memoryが出ます。
また、そもそもロリポップではphp.iniが変更できなかったりと制限があります。
$ composer require intervention/image
とかが普通にできないです。
そういえばcomposerでlaravelをインストールしようとした時もエラーが出たような・・・
対処(正解かどうかはわからない)
個人的にやったことをまとめます。
僕はこのやり方で一応なんとかなったのですが、責任は追いません。
というか、もっと良い方法ありませんか...?
scpコマンドを使用して1回ローカルに落とす
$ scp -r -P[ポート番号] ドメイン名@ssh.lolipop.jp:web [ダウンロード先]
scpコマンドはこちらの記事でわかりやすく解説してくださってます。
例えばこんな感じです。(macのデスクトップのhogeフォルダにコピーする場合)
$ scp -r -P1234 ×××@ssh.lolipop.jp:web ~/Desktop/hoge
ポート番号・パスワードが必要なので、そこはロリポップのメニューの「SSH」から見てみてください。
あと結構時間がかかります。
ローカルでcomposerを使う
$ cd [ダウンロードしたフォルダのパス]
$ composer require [パッケージ名]
composerがcommand not foundの場合はインストールしましょう。
僕はこちらの記事を参考にしました。
再びサーバーにコピー
$ scp -r -P[ポート番号] [ダウンロードしたいローカルのディレクトリパス] ドメイン名@ssh.lolipop.jp:up
これでwebディレクトリと同じ階層に、cpディレクトリが配置されました。
あとはwebディレクトリを削除し、cpディレクトリをwebにリネームすれば完了です。
$ mv web web2 (一応web2というディレクトリを作って今までのプロジェクトを保存しておく)
$ rm web
$ mv up web
これで一応完了なのですが、このあと画像をアップロードしたら画像がnot found(404)になるという事例が発生しました。
めちゃくちゃ焦りませした。。。
調べてみると、どうやらシンボリックを再作成する必要がありそうです。
ということで、
- 一旦public/storageを削除
- 再びシンボリックを作成
という処理をします。
# sshでログイン後・・・
$ cd web
$ cd public
$ rm storage
$ cd ../
$ php artisan storage:link
これで再びシンボリックが作成され、全ての工程が完了しました。。。
最後に・・・
きっともっと良い方法があるとは思うのですが(例えば手動でcomposer.jsonに追記して・・・とか)、僕の知識ではこれが一番安全でした。
そもそもレンタルサーバーでcomposerを使うのがいけないのかもしれませんね。
以上、Web初心者の苦労でした。
もっと良い方法あったらコメントお願いします!!!