サイトアイコン IT NEWS

CronからLaravel 5.5のArtisanコマンド実行でsyntax errorだと!?

cron-artisan-error

またまた舞台は当サイトで利用しているエックスサーバー
前回自作したLaravel 5.5Artisanコマンドエックスサーバー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.5PHP7以降が必須であることは分かっている。
実際に、PHP7.1に切り替えて動いているし、昔SSHPHPバージョンも変えた記憶はあるのでもう一度振り返ってみる。

おっ!!確かに、この記事と全く同じエラーの内容だ!
とにかく、CronPHPバージョンを確認してみると…。何!?

ちゃんと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も使えるのな。
以上、一件落着!

モバイルバージョンを終了