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 \path\to\artisan on line 33

エラーの原因と対策

原因

おかしい…原因がわからない。
上記のエラーメッセージで検索してみら、海外のサイトで気になる箇所を発見!
どうやら、PHPバージョンが違うそうな。
Laravel 5.5PHP7以降が必須であることは分かっている。
実際に、PHP7.1に切り替えて動いているし、昔SSHPHPバージョンも変えた記憶はあるのでもう一度振り返ってみる。

Laravelを開発する上で、ComposerやArtisanなどのコマンドによる操作がどうしても必要になりますが、世の中のほとんどのレンタルサーバーではSSHを利用することができません。しかし、当サイトでも利用していて以前から紹介しているXSERVER(エックスサーバー)では...
XSERVER(エックスサーバー)のSSHでPHPのバージョンを7に変更する方法 - Minory
おっ!!確かに、この記事と全く同じエラーの内容だ!
とにかく、CronPHPバージョンを確認してみると…。

何!?

ちゃんとPHP7になってるじゃねーか!


対策

そうか、共用サーバーだからcronが実行するバージョンとまた違うのだろうな。
勝手に納得して、PHPバージョンを指定する方法をエックスサーバーの公式サイトで調べました。
すると、ちゃんと方法があるではありませんか!

レンタルサーバー「エックスサーバー」のご利用マニュアル|あらかじめ指定した時間に指定コマンド(プログラム)を自動的に実行させる機能「Cron」の設定手順に関するご案内です。
Cron設定 | レンタルサーバー【エックスサーバー】 - www.xserver.ne.jp
(例)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も使えるのな。
以上、一件落着!


コメント

このブログの人気の投稿

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

RHEL 7でスタティック(静的)ルートを追加する4つの方法

SQLPlusでのOracleリモート接続とSQLファイルを実行する方法