2021/5/25時点で、KagoyaのマネージドサーバーでLaravel開発することは断念しました。
理由は
- Composerが使えないこと
- PHPがCliモードで使えないこと
回答いただきました、Kagoyaのサポートの方々、ありがとうございました。
サーバーに詳しくなかった自分のレベルが、今回のことで少しだけあがりました。
サーバーについては他のサーバーを検討することにします。
なお、使えない理由は下記記事にありますので、興味ある方はご参照ください。
前回は、.gitignoreを編集してgit pushしたあと、php artisan key:generateして、composerを使わずにサーバー側のLaravelが動くことが確認できました。
Kagoyaのマネージドサーバーはcomposerが使えないのでgitigonoreを編集してpushしてみた|ゼロから始めるLaravel勉強会
いよいよこれで環境構築の最後となるはずの、DBとの接続をやってみます。
Kagoyaマネージドサーバーのデータベース
Kagoyaマネージドサーバーのデータベースの追加は管理画面から行います。
Phpmyadminもここから使えるので、とても安心ですね!
これでMYSQLのデータベースを作成。
データベースの準備
まずは、管理画面からphpMyAdminを起動します。
ユーザー名とパスワードを入力してログイン。
これでデータベースは確認できたので、Laravelのサーバー側の.envを編集します。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=ここ DB_USERNAME=ここ DB_PASSWORD=ここ
DB_DATABASE、DB_USERNAME、DB_PASSWORDを入力して保存。
データベースにつながっているか確認
正しくDBにつながったかを確認します。
こちらのサイトを参考にしました。
Laravel tinker データベースの接続できるか疎通確認する – Qiita
php artisan tinkerを使うようです。
ターミナルから
$ php artisan tinker Psy Shell v0.10.8 (PHP 7.4.19 — cgi-fcgi) by Justin Hileman Content-type: text/html; charset=UTF-8 In ProcessForker.php line 160: Call to undefined function cli_set_process_title() Content-type: text/html; charset=UTF-8
あれ、うまく動きません。
念の為、ローカルMacBookでも確認
~/code/nakachon php artisan tinker Psy Shell v0.10.8 (PHP 7.3.24-(to be removed in future macOS) — cli) by Justin Hileman >>>
普通に動きました。
.envを確認
念の為、.envを確認します。
うーん、とくに問題はなさそうです。
autoload?
エラーは
Call to undefined function cli_set_process_title()
なので、autoloaderがうまくいってないのかもしれません。
こちらのサイトを参照
オートロードについて – Laravel学習帳
composer を使用してライブラリをインストールするとvendor/autoload.phpというファイルが生成されます。
このファイルがオートロードの実体ファイルです。
このファイルを一度だけrequireすることで、vendor配下のライブラリをすべて自動的にロードしてくれます。
また、プロジェクトの直下にあるcomposer.jsonでオートロードするファイルを追加することもできます。
あ、これっぽい。
PHP – composerが使えない環境で、Laravelのvendor/autoload.phpのエラーを解消したい|teratail
とおもったのだが…
cli_set_process_title()
php artisan tinkerでのエラーが
Call to undefined function cli_set_process_title()
だったので、調べてみると、これはPHPの関数でした。
PHP: cli_set_process_title – Manual
別途、test.phpをつくり
cli_set_process_title("test");
として、ブラウザからアクセスすると、
Fatal error: Uncaught Error: Call to undefined function cli_set_process_title() in /home/nakachon/public_html/myproject/public/test.php:1 Stack trace: #0 {main} thrown in /home/nakachon/public_html/myproject/public/test.php on line 1
となりました。
プロセスのタイトルを設定します。これは top や ps といったツールで表示されます。 この関数は、 CLI モードでしか使えません。
”CLIモードしか使えません。”とあるので、これが原因っぽいですね。
まとめ
php artisanはLaravel開発で頻繁に使うので、根本的なところで問題がありそうです。
Laravel – レンタルサーバでLaravelを運用できない理由について|teratail
私自身がマネージドサーバーとレンタルサーバーの違いをよく理解しておらず、金額的にも高価なのでいろいろできると思っていたのですが、ちょっとまずいかも。
引き続き、サポートに問い合わせ中です。
* 2021/5/25 サポートの方から回答をいただきました。
CLIモードで実行するために、プログラムの冒頭を
#!/opt/remi/php74/root/usr/bin/php
に変更し、CGIとして実行する方法はございます。
とのことでした。
ということで、Laravelの開発にはphp artisanを使うことが多い為、今後も同様の問題が発生することを考え、今回はKagoyoのマネージドサーバーでLaravel開発することは断念いたしました。
Kagoyaのサポートの方には丁寧に回答いただき感謝です。
ありがとうございました。