ロリポップ!サーバの cron 設定(WordPress の予約投稿関係)

ロリポップ!サーバの cron 設定でハマったのでメモ。

WordPress で未来の時間をして投稿するには cron の設定が必要らしい。ロリポップ!ではユーザ専用ページの「WEBツール」-「cron設定」から設定できる。設定項目は以下のとおりにした。

  • cronの設定名: 適当な名称
  • 日付(月): 毎月
  • 日付(日): 毎日
  • 曜日: 毎日
  • 時間(時): 毎時
  • 時間(分): 10分毎
  • 実行ファイルパス: (ルート以下のパス)

ここで「実行ファイルパス」に “(WordPress をインストールしたディレクトリ名)/wp-cron.php” と入力するように解説しているウェブページが多いが、これを入力しても動作せず。PHP のバージョンが5.3になったせいかなとも思うが、原因は不明。

調べてみると先人がいた。

ロリポップ!のヘルプページも参照。

結局、解決策としては下記のような.shファイルを作成しウェブスペースに保存。「cron設定」からはこの.shファイルを指定して実行することにした。

#! /bin/bash
/usr/local/php5.3/bin/php /(フルパス)/wp-cron.php
# wp-cron.php のアドレスはフルパスで指定。相対パスだと上手く行かなかった。

うまくいくかと思ったが今度は下記のエラーが出た。

Warning: require_once(./wp-load.php): failed to open stream: No such file or directory in /(フルパス)/wp-cron.php on line 26

Fatal error: require_once(): Failed opening required ‘./wp-load.php’ (include_path=’.:/usr/local/php5.3/php’) in /(フルパス)/wp-cron.php on line 26

また調べてみたら、同じ症状で困っていそうな人が何人かいた。いずれも WordPress Forum より。

困っている内容は同じようだが、解決策は三者三様。

  1. エラーが出ている部分(例: require_once(./wp-load.php))のファイル名の前の “./” を削除する。
  2. エラーが出ている部分(例: require_once(./wp-load.php))のファイル名の前に “.” を追加して “../wp-load.php” とする。
  3. エラーが出ている部分(例: require_once(./wp-load.php))を require_once( ABSPATH . ‘wp-load.php’) とする。

自分は1つ目を試してみた。とりあえず正常に動いてはいるようだ。