人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

さくらインターネットのcron設定について質問です。

以下の外部のcronサイトを使っていて、
http://www.setcronjob.com/
呼んでいるURLは以下です。
http://ドメイン/index.php?option=com_community&task=cron

この外部cronサイトから呼んでいるcron処理はうまくいっているんですが、さくらの内部のcron設定から同じことをやろうとするとうまく動いてくれません。
以下のように設定しましたが、動いてくれませんでした。

cd /home/ドメイン/www/ ; /usr/local/bin/php index.php?option=com_community&task=cron

/usr/local/bin/lynx lynx -source "http://ドメイン/index.php?option=com_community&task=cron"

外部cronサイトから呼んでうまくいっているのだから権限の問題ではないとおもうんですが、手掛かりがなくて困っています。
ここが違うのかもとか、こうしたらできるかもなど、なにか手掛かりを思いつく方がいましたらぜひ教えてください。

呼んでいるのは、joomlaのjomsocialというプラグイン用のcronです。
http://www.jomsocial.com/docs/Cron_Setup
さくらのコマンドパスを添付します。

よろしくお願いします。

1298950166
●拡大する


●質問者: yuma_nishizaki
●カテゴリ:インターネット ウェブ制作
✍キーワード:CD HOME http:// INDEX Lynx
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● taroe
●30ポイント

Cronで実行してるのは

/usr/local/bin/lynx lynx -source "http://ドメイン/index.php?option=com_community&task=cron

だけですよね?

ブラウザでアクセスしてるのと同じですから、権限も何もいりません。

ブラウザから、http://ドメイン/index.php?option=com_community&task=cronにアクセスしてエラーにならない

かつ、/usr/local/bin/lynxが存在するのなら

問題なく動作するはずですが

うまく動かないというのは、どういう現象ですか?

http://senrioka-info.net/0_google_sitemap/cron.htm#設定ファイルで実行する

実行するコマンドに

/usr/local/bin/lynx lynx -source "http://ドメイン/index.php?option=com_community&task=cron

を設定するだけだと思います。



質問文の

cd /home/ドメイン/www/ ; /usr/local/bin/php index.php?option=com_community&task=cron

これは何でしょうか?

◎質問者からの返答

>うまく動かないというのは、どういう現象ですか?

ブラウザからたたくのと、さくらのcron設定からたたくので、

1.出力されるページが違う

2.メールを送信するためのcronなのですが、さくらからたたくとメールが送られない

ということです。

>cd /home/ドメイン/www/ ; /usr/local/bin/php index.php?option=com_community&task=cron

>これは何でしょうか?

URLからたたくのではなく、内側からたたこうとしたけれど、失敗した例です。


2 ● Galapagos
●30ポイント

その index.php は外部ライブラリを requireしていませんか?

もしそうなら、「さくらインターネット cronでphp実行の方法について。」の手順を試してみてください。

◎質問者からの返答

requireしているみたいです。

参考にしてやってみました

cd /home/アカウント/www; /usr/local/bin/php -d include_path='.:/home/アカウント/www/includes' index.php

これではだめでした。

.phpファイルの中でちゃんとパスの指定もしているみたいなんですが、

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );

require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

これでも、さらにこれに加えてパスの指定っているんですかね?


3 ● shak
●30ポイント

さくらのコントロールパネルから、php.iniで特別な設定などはしていませんか?

その場合、-cオプションで'php -c /home/*username*/www/php.ini index.php'のようにして読み込ませる必要があった気がします。

◎質問者からの返答

べつのやり方で解決できてしまったため、今回の件に関しては、これは試しませんでした。

ご提案ありがとうございました。


4 ● hanako393
●30ポイント ベストアンサー

$html = file_get_contents($url);

たとえば、ブラウザからは上記はOKでも

cronなどのスクリプトからは駄目なサーバーはあります。

ご存知のとおり

URLをファイルのように扱うには allow_url_fopen がonになっていないといけないのですが

スクリプトの実行時は、offになっているという場合です。

エラーレベルをE_ALL にして

エラーログをはくようにすれば何らかの警告ぐらいはでてると思うのですがどうでしょうか?

◎質問者からの返答

調べてみましたら、おっしゃるとおり、どうやらさくらでは引数を含む動的なURLをCRONで叩く事はできなさそうです。

(さくらから直接明確な回答をもらったわけではないので定かではありません。cronの書き方についてはサポート外だそうです。)

>URLをファイルのように扱うには allow_url_fopen がonになっていないといけないのですが

>スクリプトの実行時は、offになっているという場合です。

>エラーレベルをE_ALL にして

>エラーログをはくようにすれば何らかの警告ぐらいはでてると思うのですがどうでしょうか?

別のやり方で解決できてしまったため、これは試せませんでした。

ありがとうございます。

以下のやり方で解決しました。

ご参考まで。

1./components/com_community/cronjob.phpをテキストエディタで開く

2.次の行をコメントアウトする(先頭に//を追加)

//defined('_JEXEC') or die('Restricted access');

3.次の行を編集し保存する。

$hostname = 'ドメイン名';

4.JomSocialで、メールが送られるような操作を行う(友達になるなど)

5.JomSocialのメールキューにメールがPendingになっているのを確認する

5.ブラウザから次のURLにアクセスし「Cronjob processed. 」と表示されるか確認

http://ドメイン名/components/com_community/cronjob.php

6.実際にメールが送られているか確認

7.再度メールが送信されるような操作を行う

8.さくらのCRON設定で次を叩く

cd /home/ユーザ名/www/components/com_community/ ; /usr/local/bin/php cronjob.php

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ