またまた舞台は当サイトで利用しているエックスサーバー。
前回自作したLaravel 5.5のArtisanコマンドをエックスサーバーのCron機能で実行したところ、以下のようなエラーが表示されました。
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in pathtoartisan on line 33
エラーの原因と対策
原因
おかしい…原因がわからない。
上記のエラーメッセージで検索してみら、海外のサイトで気になる箇所を発見!
どうやら、PHPのバージョンが違うそうな。
Laravel 5.5はPHP7以降が必須であることは分かっている。
実際に、PHP7.1に切り替えて動いているし、昔SSHのPHPのバージョンも変えた記憶はあるのでもう一度振り返ってみる。
おっ!!確かに、この記事と全く同じエラーの内容だ!
とにかく、CronでPHPのバージョンを確認してみると…。何!?
ちゃんとPHP7になってるじゃねーか!
対策
そうか、共用サーバーだからcronが実行するバージョンとまた違うのだろうな。
勝手に納得して、PHPのバージョンを指定する方法をエックスサーバーの公式サイトで調べました。
すると、ちゃんと方法があるではありませんか!
(例)abc.phpをPHP 7.2 で実行する場合
/usr/bin/php7.2 /home/サーバーID/独自ドメイン名/public_html/abc.php
ふむふむ、このように指定してあげればいいらしい。
/usr/bin/php[バージョン]
その他、サーバーパネルの「サーバー情報」>「コマンドパス一覧」に、利用できるコマンドパスが書いてありましたので、ついでに転記しておきます。
コマンドパス一覧
コマンド | パス |
---|---|
Perl | /usr/bin/perl |
PHP7.2(CGI) | /usr/bin/php7.2-cgi 又は /usr/bin/php-fcgi7.2 |
PHP7.2(CLI) | /usr/bin/php7.2 |
PHP7.1(CGI) | /usr/bin/php7.1-cgi 又は /usr/bin/php-fcgi7.1 |
PHP7.1(CLI) | /usr/bin/php7.1 |
PHP7.0(CGI) | /usr/bin/php7.0-cgi 又は /usr/bin/php-fcgi7.0 |
PHP7.0(CLI) | /usr/bin/php7.0 |
PHP5.6(CGI) | /usr/bin/php5.6-cgi 又は /usr/bin/php-fcgi5.6 |
PHP5.6(CLI) | /usr/bin/php5.6 |
PHP5.5(CGI) | /usr/bin/php-fcgi5.5 |
PHP5.5(CLI) | /usr/bin/php5.5 |
PHP5.4(CGI) | /usr/bin/php-fcgi5.4 |
PHP5.4(CLI) | /usr/bin/php5.4 |
PHP5.3(CGI) | /usr/bin/php-fcgi5.3 |
PHP5.3(CLI) | /usr/bin/php5.3 |
PHP5.1(CGI) | /usr/bin/php-fcgi5.1 |
PHP5.1(CLI) | /usr/bin/php5.1 |
Ruby2.0.0 | /usr/bin/ruby |
Python2.7.5 | /usr/bin/python |
Python3.4.3 | /usr/bin/python3.4 |
nkf | /usr/bin/nkf |
sendmail | /usr/sbin/sendmail |
gzip | /usr/bin/gzip |
zip | /usr/bin/zip |
unzip | /usr/bin/unzip |
一応、RubyとかPythonも使えるのな。
以上、一件落着!
- Original:https://minory.org/cron-artisan-error.html
- Source:Minory
- Author:管理者