「Xserver」で「cron」が動かない
お客様要件で、データベースに蓄積されたデータを使ってレポートを作成する必要があり、本プログラムを作成しました。
夜間に動作させるため、cronを使いバッチ処理で動作させようとしたところ、なぜかエラーに遭遇。サーバーは、「Xserver」を使っておりました。備忘録もかねてその解決策をついて記載いたします。
1.発生したエラー内容
require_once(): Failed opening required ‘./wp/wp-load.php’
WordPressのライブラリを呼び出す、require_once()で発生していました。
2.今回は、「Xserver」の「cron設定」から実施
いつもならば、SSH経由でcronを設定するのですが、今回は、「Xserver」のコントロールパネルの「cron設定」から設定をしていました。
(GUI形式での設定が楽なので。)
ところが、上記のエラーを出力し動かない事象に遭遇
SSH経由では動いていた実績があるので、あらためてSSHからcronに登録すると、これは、問題なく動きました。
3.原因と対処
どうやら、requiredで書かれている箇所で発生しているので、相対パスがいけないのかなと思い試しに絶対パスにしたところ、エラーが発生しませんでした。
とはいえ、全てを絶対パスに書き換えるのはナンセンスですので、該当ファイルがあるディレクトリに移動してから、プログラムを実行するようcronに設定するようにしました。
すると、うまく動作しました。
例)cron(これを、Xserverのコントロールパネルの「cron設定」から設定しました)
1 | 0 2 * * * root cd /home/example/public_html/ && /usr/bin/php /home/example/public_html/example.php |
なぜ、SSH経由だと実行可能なのか。を調べてみたのですが、結論としては、SSH経由だと実行ディレクトリが正しく認識されており、当然の事ながら正常に動作していました。
もし、cronが動かないような場合には、プログラムを疑うだけでなく、環境周りを確認する事、また、場合によってはサーバー会社のサポート窓口に問い合わせしてみるのも良いかもしれません。
以上、皆さまのお役に立てれば幸いです。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル