[PHP][Laravel][Xserver]ローカル、手動実行でも成功したバッチがCronからの実行で失敗した話
はじめに
XserverでPHPのバッチをCronから実行した時にPHPバージョン違いによりエラーになった話を書きます。
起きたこと
Laravelでバッチ実行しようとしてcronに登録したさいの実行ログをみたらPHPのパースエラーが!
しかもartisanのコマンド内で起きている!?
こんなエラーです
PHP Parse error: syntax error, unexpected 'class’ (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$’ in /home/xxxxxxx/xxxxxx/xxxx/artisan on line 33
対処ログ
ローカルでも手動実行でも起こらなかったのになぜ!?と思い調べてみました。
ちなみにphp -v で実行されるバージョンはPHP7.4までにあげてあります。
[xsxxxxx@svxxxx logs]$ php -v PHP 7.4.4 (cli) (built: Apr 9 2020 20:23:01) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
原因はCronで実行されるときのPHPのバージョン違いでした
XserverのCronでphpコマンドを叩くとPHP5.4のバージョンで実行されるみたいです
そりゃPHP7ベースで作られているアプリは動かないかってわけです。
cronはphpコマンドで実行すると /usr/bin/php -vの方のバージョンをみるみたいです。
[xsxxxx@svxxxx logs]$ /usr/bin/php -v PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
バージョン指定して実行
/usr/bin/php7.3 artisan schedule:run
こんな感じでPHPのバージョン指定してあげたら動きました
Xserverで対応しているPHP一覧
対応しているバージョンは以下の通り。
日々Updateされていると思うのでCron設定時に以下コマンドを実行してみてください。
[xsxxxxx@svxxxxx logs]$ ls -lrt /usr/bin/php[0-9].[0-9] lrwxrwxrwx 1 root root 23 5月 11 10:41 /usr/bin/php5.4 -> /opt/php-5.4.16/bin/php lrwxrwxrwx 1 root root 22 5月 11 10:41 /usr/bin/php5.3 -> /opt/php-5.3.3/bin/php lrwxrwxrwx 1 root root 22 5月 11 10:41 /usr/bin/php5.1 -> /opt/php-5.1.6/bin/php lrwxrwxrwx 1 root root 23 5月 11 10:41 /usr/bin/php5.5 -> /opt/php-5.5.38/bin/php lrwxrwxrwx 1 root root 28 5月 26 11:22 /usr/bin/php5.6 -> /opt/php-5.6.40-webp/bin/php lrwxrwxrwx 1 root root 28 5月 26 11:22 /usr/bin/php7.0 -> /opt/php-7.0.33-webp/bin/php lrwxrwxrwx 1 root root 23 5月 26 11:22 /usr/bin/php7.2 -> /opt/php-7.2.29/bin/php lrwxrwxrwx 1 root root 28 5月 26 11:22 /usr/bin/php7.1 -> /opt/php-7.1.33-webp/bin/php lrwxrwxrwx 1 root root 23 5月 26 11:22 /usr/bin/php7.3 -> /opt/php-7.3.16/bin/php lrwxrwxrwx 1 root root 22 5月 26 11:22 /usr/bin/php7.4 -> /opt/php-7.4.4/bin/php
ディスカッション
コメント一覧
まだ、コメントがありません