XServerの Cron を利用してPHPスクリプトを実行したが正常に実行されない

事象:

XServerの Cron を利用してPHPスクリプトを実行したが正常に実行されない

調査と解決方法:

1.「XServer」で使用している現在の「PHP」バージョンを事前に確認する

・XServerの「コントロールパネル」に > ログイン
・「全メニュー表示」 > 「PHP Ver. 切替」

2.該当する「対象ドメイン」と「現在のバージョン」のPHPを確認する

以下の例だと > PHP8.2.28 > この場合は > PHP8.2 となる

3.「全メニュー表示」 > 「Cron設定」 > 「+Cron設定を追加」

4.Cronで実行させるPHPのコマンドパスとスクリプトを登録する

参考URL:https://www.xserver.ne.jp/manual/man_program_cron.php

ファイルマネージャーで > スクリプトのパーミッションを「701」にしておくと書いてあるので > ファイルマネージャーで設定した

■登録したコマンド

/usr/bin/php8.2 /home/(ここにXServerID)/(ここにドメイン名)/public_html/cron.php

#PHP8.2 と /home/ の間は > 半角スペースが入ります!

■エラーと解決方法

エラー:相対でパスを指定していた箇所
 require_once(‘../header.php’);

正常:フルパスで指定
 require_once(‘/home/(ここにXServerID)/(ここにドメイン名)/public_html/header.php’);

エラー:if文で$_SERVER[‘SERVER_NAME’]を使っていた
 if($_SERVER[‘SERVER_NAME’] ==’xsXXXXX’)

正常:代わりに、if文で gethostname()  を使った
 f(gethostname() ==’sv XXXXX.xserver.jp’)

Cron結果の通知アドレス を登録しておくとCronエラーがメールで届くので、デバッグに便利。

#最初に登録したメールアドレスでは、フィルタリングされたのか > 通知メールが不達になったので > gmailに変更したら届きました。

以上