事象:
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に変更したら届きました。
以上