WordPressでのcron投稿について

このQ&Aのポイント
  • WordPressにはcronを使用して自動投稿することができます。
  • しかし、cron実行の際にファイルが読み込めず実行されない問題が発生しています。
  • 手動でアクセスすると投稿されるため、原因を特定することが求められています。
回答を見る
  • ベストアンサー

wordpressでのcron投稿について

wordpressに対してcronを使い、自動投稿させたいと思います。 使っているライブラリはzendframework xmlrpcです。 wordpressのトップディレクトリ内にzendディレクトリ及びcronを実行するphpファイルを置いているのですが、エラーが返されてしまいます。直接手動でそのファイルにアクセスするとしっかりと実行されます。 --------------------------------------------------------------------------------- PHP Warning: require_once(Zend/Http/Client.php): failed to open stream: No such file or directory in /var/www/html/Zend/XmlRpc/Client.php on line 28 Warning: require_once(Zend/Http/Client.php): failed to open stream: No such file or directory in /var/www/html/Zend/XmlRpc/Client.php on line 28 PHP Fatal error: require_once(): Failed opening required 'Zend/Http/Client.php' (include_path='.:/usr/share/pear:/usr/share/Zend') in /var/www/html/Zend/XmlRpc/Client.php on line 28 Fatal error: require_once(): Failed opening required 'Zend/Http/Client.php' (include_path='.:/usr/share/pear:/usr/share/Zend') in /var/www/html/Zend/XmlRpc/Client.php on line 28 --------------------------------------------------------------------------------- 上記を見る限りではZend/Http/Client.phpのファイルが読み込めてない状態になってることがわかりました。 何故手動でアクセスすると投稿されるのに、cron実行の場合は外部のファイルを読み込めず実行されないのかどなたかご教授頂きたいと思います。尚、検索した結果以前にも似たような質問があり、下記URLの方法を読んでみたのですが理解できませんでした… http://okwave.jp/qa/q7141530.html

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

cronではどのように起動しているのでしょうか?当該スクリプトのある位置をカレントディレクトリにしていますか( cd で移動してから実行していますか?)pathを指定して実行しているようなら、カレントディレクトリが正しくないと思われますが・・・

atlantic32
質問者

補足

cronでは ----------------------------------------------- root /usr/bin/php /var/www/html/cron_post.php としております。cdで移動せずに実行していました。

関連するQ&A

  • PHP PEARパッケージのincludeができない。

    PHP PEARパッケージのincludeができない。 お世話になっております。 phpのPEARパッケージのincludeができません。 行うと PHP Warning: require_once(File/CSV.php): failed to open stream: そのようなファイルやディ レクトリはありません in /var/www/httpdocs/XXXXXXXX.php on line 10 PHP Fatal error: require_once(): Failed opening required 'File/CSV.php' (include_path='.:/usr/share/pear') in /var/www/httpdocs/XXXXXXXX.php on line 10 となってしまいます。 エラーメッセージ中の/usr/share/pear上に確かに存在します。 何か他に条件などあるのでしょうか? お願いいたします。

    • ベストアンサー
    • PHP
  • OpenPNEの設定ができません。

    OpenPNEの設定ができません。 サーバーはNSFレンタルサーバーで、 MySQL5、PHP5のオプションをつけています。 PHPやMyQSLについて全くの素人ですので、 wkyOpenPNEInstallerという自動インストールソフトを使って挑戦しています。 必要事項を記入してインストールを終えると、 Warning: require_once(/sns//config.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/html/(ドメイン)/public_html/config.inc.php on line 8 Fatal error: require_once() [function.require]: Failed opening required '/sns//config.php' (include_path='.:/usr/share/pear:/usr/share/smarty') in /var/www/html/(ドメイン)/public_html/config.inc.php on line 8 というエラーが出てきます。 上記エラー文中にある、config.inc.phpファイルは下記の通りです。 <?php /** * @copyright 2005-2008 OpenPNE Project * @license http://www.php.net/license/3_01.txt PHP License 3.01 */ define('OPENPNE_DIR', '/openpne_dir/' ); require_once OPENPNE_DIR . '/config.php'; ?> config.phpのパスが間違っているというようなエラーかと思い、 色々試しているのですが、うまくいきません。 関係がありそうなファイルのディレクトリ構造は、 現在のところ以下のようになっています。 -public_html   -index.php   -config.inc.php   -他 -sns   -config.php 色々調べてみると、php5では「require_once」が使えないとか出てきたり、 とにかくパスの指定やディレクトリが間違えていると出てきたりしているのですが、 全く改善ができません。 何かアドバイスを教えていただければと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • ロリポップでZendを導入できますか?

    ロリポップでZendを導入しようとしていますが、エラーが出て困っています。 Zendの場所はユーザから見たら一番上のルート、つまり/home/sites/lolipop.jp/users/***/web/Zend としています。エラーは下記です。(***は私のユーザ名、/aaa/index.phpを実行しています。) Warning: require_once(Zend/Controller/Action.php) [function.require-once]: failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/***/web/aaa/index.php on line 4 Fatal error: require_once() [function.require]: Failed opening required 'Zend/Controller/Action.php' (include_path='.:/usr/local/php5/php') in /home/sites/lolipop.jp/users/***/web/aaa/index.php on line 4 また、.htaccessにはphpのパスを通すため、下記のように書いています。 php_value include_path ".:/usr/local/php5/php:/home/sites/lolipop.jp/users/***/web/Zend/" .htaccessの場所は、Zendフォルダと同じくルートディレクトリです。(つまり/home/sites/lolipop.jp/users/***/web/ の下です。) また、念のため、.htaccessに下記の記述も試しましたが、だめでした。 php_value include_path ".:/usr/local/php5/php:/home/sites/lolipop.jp/users/***/web/" 何が悪いのでしょうか?あるいはそもそもロリポップへのZendの導入は無理なのでしょうか?

    • ベストアンサー
    • PHP
  • PHPをバージョンアップしたらCRONが動かない

    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 ---------------------------------------------

    • ベストアンサー
    • PHP
  • wordpress サイトのルート

    wordpressを勉強しています。インストールは終えたのですが、サイトのルート表示の設定に躓いています。Giving WordPress Its Own Directory(http://wpdocs.sourceforge.jp/Giving_WordPress_Its_Own_Directory)を参考にしているのですが、サイトのルートにアクセスすると下記のエラーがでます。 どのようにしたらよいでしょうか。 エラー内容: Warning: require() [function.require]: Unable to access ./wp-blog-header.php in /virtual/***/public_html/index.php on line 17 Warning: require(./wp-blog-header.php) [function.require]: failed to open stream: No such file or directory in /virtual/***/public_html/index.php on line 17 Fatal error: require() [function.require]: Failed opening required './wp-blog-header.php' (include_path='.:/usr/local/lib/php') in /virtual/***/public_html/index.php on line 17

  • WindowsとCentOSでのPHPの動作

    いつもお世話になっております。 Windows環境で開発したPHPアプリをCentOS環境に移行しようとしているのですが、 件名のとおり、PHPのrequireの動作がWindowsとCentOSで違うことから、 原因を調べております。お知恵を拝借したいと思います。 例えば、以下の構成で親プログラム(myApp.php)から子(myparts/main.php)を読み込もうとしています。 ドキュメントルート/test/myApp.php ドキュメントルート/parts/mypartsA/main.php ●myApp.php <?php echo ("##### myApp is starting now !!! </br>"); require_once('/parts/mypartsA/main.php'); ?> ●mypartsA/main.php <?php echo ("#### mypartsA is required </br>"); ?>And myApp.php and mypartsA/main.php are in following structure. 結果として、 ●Windowsでは、以下が表示されますが・・・ ##### myApp is starting now !!! #### mypartsA is required ●CentOSでは、以下のとおりエラーになります。 PHP Warning: require_once(/parts/mypartsA/main.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in /var/www/html/test/myApp.php on line 12 PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required (/parts/mypartsA/main.php’(include_path='.:/php/includes:/usr/share/pear:/usr/share/pear/PEAR:/var/www/html') in /var/www/html/test/myAPP.php on line 12 解決策として、以下のようにすればエラーが解消することは分かっているのですが・・・ require_once($_SERVER['DOCUMENT_ROOT']./parts/mypartsA/main.php); なるべく既存のアプリに手を入れたくないので、 何故Windowsではできて、何故CentOSではできないのかを知りたいと思います。 とりあえず、PHP.iniのinclude_pathを調べてみましたが、 表記方法の違いはあるものの、に意味的な違いが見つかりません。 ●Windowsでの設定 .;C:\PHP;C:\PHP\pear;C:\Apache2.2.22\htdocs ●CentOSでの設定 .:/php/includes:/usr/share/pear:/usr/share/pear/PEAR:/var/www/html この他何をポイントに調べていったらよいか教えていただければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • twitterのbot作成についての質問です。

    twitterのbot作成についての質問です。 http://pha22.net/twitterbot/1.4/adv_id.phpのサイト様を参考にして、botを作ろうとしています。 サーバーは @pages で、アップロードをしたのですが、「bot.php」にアクセスすると、「Twitterへのpostに成功しました。」という文は表示されずに Warning: require_once(HTTP/OAuth/Consumer.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/www/htdocs/(ユーザー名)/public_html/twitbot/EasyBotter.php on line 49 Fatal error: require_once() [function.require]: Failed opening required 'HTTP/OAuth/Consumer.php' (include_path='.:/usr/local/lib/php:/usr/local/www/htdocs/(ユーザー名)/public_html/twitbot/PEAR') in /usr/local/www/htdocs/(ユーザー名)/public_html/twitbot/EasyBotter.php on line 49 となってしまいます。同じような質問をされた方がいて回答には、 HTTP/OAuth/Consumer.phpが、include_pathない為エラーになってます。 http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php のようにpearコマンドでインストールするか、include出来る場所にファイルを直接置くかする必要がありますよ。 という事が書かれていたのですが、初心者な為、いまいち理解に欠けてしまいました。 詳しく分かりやすいように説明していただきたいです。こちらも出来る限りの事は調べるようにいたしますので、よろしくお願いします。

    • ベストアンサー
    • PHP
  • ZendFramework 環境設定

    現在、Zendframeworkで開発していこうと考えていたんですが、以下のエラーがでて先に進めません。本来は「http://localhost」とアクセスすると画面が表示されるはずなのですがダメです。 環境[OS X] サーバー[Xampp for mac] Warning: require_once(Zend/Controller/Front.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/index.php on line 2 Fatal error: require_once(): Failed opening required 'Zend/Controller/Front.php' (include_path='.:/php/includes:/Applications/XAMPP/ZendFramework/library/Zend') in /Applications/XAMPP/xamppfiles/htdocs/index.php on line 2

    • 締切済み
    • PHP
  • fedora11でのcron設定

    fedora11,apache,php5の環境でcronを使いたいのですが、動きません。。 状況が、 fedora11 php5 apache を使用していて、cronを使ってphpの定期実行を行いたいのですが、どうしてもうまくいきません。 かなりググってはみたのですが、liuxについては初心者なので、どうにもわかりません。 設定内容が、 /etc/crontabが、 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ * /1 * * * * apache /usr/bin/php /var/www/html/cron.php で、/var/log/cron でログを確認したところ Jul 28 19:00:01 host CROND[8417]: (apache) CMD (/usr/bin/php /var/www/html/cron.php) となっていてこれが一分ごとに出てきます。 cron.phpにはファイル追記の処理を書いてあります。 エラーではないようなのですが、ファイル操作が行われていないようなので動いていないようなのです。 ローカルホストでphpを実行したらちゃんと動くのでphp内のミスではないようです。 パーミッション関係だったらログにエラーが出そうなものですし、、、。困っています。。 どなたかお知恵を貸していただけませんでしょうか、よろしくお願いします。

  • PHPファイルをcronで定期的に実行したい

    centosでtest.phpを30分おきに動作させようと思います。 test.phpは /var/www/html/においてあります。 test.phpはコードの中で、require_once 'phpkit/kits.inc';と /var/www/html/phpkit/kits.incを呼び出しています。 [root]# find / -name php /root/src/senna-1.1.4/bindings/php /usr/share/swig/1.3.40/php /usr/share/php /usr/bin/php /usr/include/php /usr/lib64/php /var/lib/php [root]# /etc/rc.d/init.d/crond status crond (pid 1181) is running... [root]$ crontab -e 30 * * * * /usr/bin/php /var/www/html/test.php しかし、以上のように設定してもtest.phpは一度も実行されません。 phpのインストールは、ここの「PHPをソースからインストール」を利用しました。 http://www.akiyan.com/blog/archives/2008/09/tritonnmysqlsen.html /var/www/html/にinfo.phpを置いてアクセスしたところ、正常に情報が表示されます。 /var/www/html/にtest.phpを置いて、手動でアクセスしたところ、test.phpは正常に動作します。 ですので恐らくcrontabの設定が間違っているのだと思いますが、これ以上どうすればいいのかがわかりません。 cronでtest.phpを動作させるのに、この後どうすればいいのでしょうか。 どなたかご教示のほど、どうかよろしくお願いします。