質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

1回答

869閲覧

centos cronによるphpバッチジョブの構築

HiroNishida

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2021/12/07 07:35

phpプログラミング歴2ヶ月の人間です。
ド素人ですが、どうぞよろしくお願い致します。

centos8+Mysql8+phpで、DATA LOAD INFILE を実行するプログラムがあります。
ブラウザから実行すると稼働している状況です。
(社内の閉域ドメインで、ブラウザから http://●●●.●●●.●●●.●●●/_scheduler/index.php で動きます)

これをcentos8上のcrontabに設定して自動バッチ環境を構築していますが、全く稼働しない状況です。
whoami > /tmp/test みたいに、centosコマンドをcrontabに設定すると稼働していますので、cron環境そのものは整備されていいます。

◆crontab記載
10 * * * * /usr/bin/php /var/www/html/_scheduler/index.php

・バッチスケジュール日付は、随時変えております(whoamiで確認済です)
・/usr/bin/php は、which php コマンドで確認しています

crontabの記載方法や、ログ解析によるシュート方法など、ご教授いただけたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

まずはcronを実行するユーザーでSSHでログインして
/usr/bin/php /var/www/html/_scheduler/index.php
を実行して、想定通りに動く事を確認しましょう。

ありがちなのはパーミッションの問題だったり、webサーバー経由でしかアクセス出来ないスーパーグローバル変数を使ったりしているようなケースですね。

デバッグ方法は基本的にはブラウザと同じで良いですが、
バッチ実行用のphp.iniを用意して、error_reportingとdisplay_errorsの項目を最大限表示する様にして/usr/bin/php -c {バッチ用のphp.iniのパス} /var/www/html/_scheduler/index.php
という感じで実行するとデバッグしやすいです。

投稿2021/12/07 08:14

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroNishida

2021/12/07 09:12

ご回答ありがとうございます。 偶然ですが、user-nameにrootを入れたら動きました! 10 * * * * root /usr/bin/php /var/www/html/_scheduler/index.php 動いた理由が理解できていないのですが、ご回答いただきありがとうございました。
otn

2021/12/07 12:23

> 偶然ですが、user-nameにrootを入れたら動きました! それ、/etc/crontab ファイルを直接編集してしまってますね。 それをやって絶対駄目と言うことでは無いですが、普通は、実行したいユーザーでcrontabコマンドで登録します。
tanat

2021/12/07 13:38

> 偶然ですが、user-nameにrootを入れたら動きました! otnさんのコメントの通り、推奨される方法ではありません。 crontabの使い方は https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html の説明が分かりやすいと思います。 rootであれば実行出来たということはパーミッション(該当ファイル/ディレクトリのオーナー:グループと権限設定)の問題である可能性が高いので、適切なパーミッションを設定して実行されることをお勧めします(出来れば/var/www/htmlより上位の階層に置いて、ブラウザからは叩けない様にするのが良いです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問