KAGOYA

Kagoyaマネージドサーバーでlaravelのphp artisan tinkerが動かない問題

2021/5/25時点で、KagoyaのマネージドサーバーでLaravel開発することは断念しました。

理由は

  • Composerが使えないこと
  • PHPがCliモードで使えないこと

回答いただきました、Kagoyaのサポートの方々、ありがとうございました。
サーバーに詳しくなかった自分のレベルが、今回のことで少しだけあがりました。

サーバーについては他のサーバーを検討することにします。

なお、使えない理由は下記記事にありますので、興味ある方はご参照ください。

Kagoyaのマネージドサーバーはcomposerが使えないのでgitigonoreを編集してpushしてみた

Kagoyaマネージドサーバーでlaravelのphp artisan tinkerが動かない問題

前回は、.gitignoreを編集してgit pushしたあと、php artisan key:generateして、composerを使わずにサーバー側のLaravelが動くことが確認できました。

Kagoyaのマネージドサーバーはcomposerが使えないのでgitigonoreを編集してpushしてみた|ゼロから始めるLaravel勉強会

いよいよこれで環境構築の最後となるはずの、DBとの接続をやってみます。

Kagoyaマネージドサーバーのデータベース

User Control Panel 2021 05 23 09 41 57

Kagoyaマネージドサーバーのデータベースの追加は管理画面から行います。

Phpmyadminもここから使えるので、とても安心ですね!

これでMYSQLのデータベースを作成。

データベースの準備

User Control Panel 2021 05 23 10 22 27

まずは、管理画面から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のサポートの方には丁寧に回答いただき感謝です。
ありがとうございました。