
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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページに一人一回しか投...
-
所有者apacheでパーミッション644
-
空メールでPHPを起動
-
GCCでライブラリが足りない
-
「DNSサーバーを自動的に取得す...
-
WWWの閲覧とポート番号113
-
Red Hat Linux7.3でNICが認識さ...
-
DNSルートサーバについて
-
検索をかけた時、ページを開け...
-
MSFCへのARCserveClientAgent
-
postfixのmailboxのパスを変更...
-
Macのファイル共有で複数のPCを...
-
掲示板に投稿する際に投稿時刻...
-
yahooのフリーメールをMacintos...
-
MacとWinマシンをIEEE1394(Fire...
-
動的IPのサーバでメール送信が...
-
メールをトリガーとして....
-
サーバーというのとメインフレ...
-
ACCESS2000で今週の月曜日を取...
-
Linuxサーバに社内からSSH接続...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP5.2.9インストール時に、 Or...
-
コンパイルエラー
-
Red Hat ES 3にPHP5.2.5インス...
-
GCCでライブラリが足りない
-
fedora php pdoでdb2接続方法
-
PHPのビルドについて質問です。
-
PHPをバージョンアップしたらCR...
-
include_pathの記号について
-
linux-C言語(gcc)でPostgresql
-
undefined symbol: ap_php_snpr...
-
所有者apacheでパーミッション644
-
リモートデスクトップ接続でパ...
-
同一のホスト名で何か問題があ...
-
「DNSサーバーを自動的に取得す...
-
クロームキャストについて質問...
-
DNSサーバを設定したのですがns...
-
エクセルで#N/Aを含めた平均値...
-
エラーメールで"too many hops"...
-
同じ独自ドメインを2つのサーバ...
-
パスワード設定していないユー...
おすすめ情報