CentOSとPHPをバージョンアップしたら、CRONだけが動かなくなってしまいました。
PATH関係が変わったことが問題のような検討がつくのですが、いろいろ試してもうまくいきません。どのように解決したら良いか教えていただければと思います。
[バージョンアップ内容]
CentOSを5.3から5.7にバージョンアップ
PHPを5.1.6から5.3.3にバージョンアップ
phpMyAdmin3.4.8をインストール
MySQL 5.0.77(バージョンアップせず)
バージョンアップ前には
・PHPからMySQLにデータを登録するプログラムは動作していた。(ウェブサイト形式で動作確認)
・上記のプログラムはCRONで動いていた。(CRONでも動作確認)
PHP5.1.6の時はCRONに下記のように登録していました。
10 * * * * /usr/bin/php /var/cron_file/test_cron.php
アップデート後にウェブサイト形式でプログラムが動くことを確認しました(ページを開くと下記のプログラムが動作し、データをMySQLに登録)
phpMyAdminも問題なく動きます。
CRONの問題点を探し出すために下記のことを行いました。
CRONのステータスを確認
# /etc/rc.d/init.d/crond status
crond (pid 32151) を実行中...
CRONをリスタート
# /etc/init.d/crond restart
crond を停止中: [ OK ]
crond を起動中:
CRONのエラーの確認
# vi /var/log/cron
PHPの場所の確認
# find / -name php
/usr/share/php
/usr/include/php
/usr/bin/php
/usr/lib64/php
/var/lib/php
どれがPHPの場所なのかがわからないので、とりあえず5.1.6の時に指定していた「/usr/bin/php」を採用
このあたりはネットで情報を探して、登録してみたので正しいのかどうかよくわかりません。↓
PATHの記入
(その1)
# vi /root/.bash_profile
PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin
export PATH
(その2)
#vi /etc/profile
PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin
export PATH
PATHの確認
# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/php
(上記以外にもいろいろいじっていたら、このようになってしまいました。上記以外のところでどこで設定したかがわからないので、PATHを消す方法も教えていただければと思います)
「/usr/kerberos/sbin:/usr/kerberos/bin」はもともとシステムで登録されていたもので、上記で登録した「/sbin:/usr/sbin:/bin:/usr/bin」以外のもの「/usr/bin/php」などはどこで登録したかわからなくなってしまったものです。
CRONでPATHを指定する部分でPHPのバージョンによりPATHの値が異なるという情報を見つける
/usr/bin/php
/usr/bin/php5
/usr/bin/php53
各パターンで
「10 * * * * /usr/bin/●● /var/cron_file/test_cron.php」
をcrontab -eに登録してエラーを見てみる。
(1)「*/1 * * * * /usr/bin/php /var/cron_file/test_cron.php」
# vi /var/log/cron
→エラーに何も表示されない
(2)「*/1 * * * * /usr/bin/php5 /var/cron_file/test_cron.php」
→ エラーに何も表示されない。
(3)「*/1 * * * * /usr/bin/php53 /var/cron_file/test_cron.php」
→エラーが表示される
Dec 16 20:20:01 ドメイン crond[11412]: (root) CMD (/usr/bin/php5 /var/cron_file/test_cron.php)
クローン自体は動いていて、エラーがでているような感じは把握できたのですがここで行き詰まりました。
PHPのパス関係か、MySQLのパス関係、PHPとMySQLの連係、そのあたりのどこかが原因なのでしょうか?
参考資料としてphpinfo()の情報を記載します。
Loaded Configuration File /etc/php.ini
PATH /sbin:/usr/sbin:/bin:/usr/bin
参考)プログラムの内容
---------------------------------------------
require_once ('/var/DB接続情報保存ディレクトリ/password.php')
try
{
$dbh = new PDO($DSN , $DBUSER , $DBPASS);
$query=<<<EOF
INSERT INTO
test
(name)
VALUES
(:name)
EOF;
$stmt = $dbh->prepare($query);
$name='斉藤太郎';
$stmt->bindParam(':name', $name);
$stmt->execute();
}//try_end
catch(PDOException $e)
{
print "Error!: " . $e->getMessage() . "<br>";
die();
}//catch_end
---------------------------------------------
No.1ベストアンサー
- 回答日時:
phpが正しくインストールされて動作しているなら、
which php
でインストールされているパスが判るはずです。
パスをあわせればcronは動くと思いますよ。
回答ありがとうございます。
which phpでパスを確認し、実行権限をrootにしてみたら動きました。
Linuxは触り始めたばかりなので、ネット上で調べていてどれがPHPのパスなのかがわからなくなっていました。which phpで場所が分かったので、残りの実行権限の変更に辿り着けました。数日間苦しんでいたので、プログラムが動いて嬉しいです。
本当に感謝です。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アップロードファイルを表示す...
-
PHPの構文で間違えが分からない
-
php エラー
-
PHPSpreadsheetを使って関数を...
-
PHPで画像の渡しが上手く行きま...
-
phpでcookieがうまく保存されない
-
PHP MySQLに画像を直接保存
-
PHP8を使うと、大量のWarningが...
-
PHPのセッション有効期限について
-
ページング phpの書き方がわか...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Red Hat ES 3にPHP5.2.5インス...
-
PHP5.2.9インストール時に、 Or...
-
コンパイルエラー
-
linux-C言語(gcc)でPostgresql
-
Call to undefined function: m...
-
fedora php pdoでdb2接続方法
-
icu ビルドエラー
-
LinuxのPHPのパス
-
Apache OpenSSL PHP でエラー
-
phpのインストールが上手く行き...
-
cygwinのgccによるコンパイルう...
-
パスがうまく通らないので、パ...
-
「DNSサーバーを自動的に取得す...
-
パスワード設定していないユー...
-
同一のホスト名で何か問題があ...
-
DNSサーバを設定したのですがns...
-
エラーメールで"too many hops"...
-
リモートデスクトップ接続でパ...
-
”Tortoise SVN” と ”Subversio...
-
Mailの送信済みメールボックス...
おすすめ情報