2016-10-05 8 views
0

linux localhostの下で1分ごとにmysqlテーブルを更新しようとしていますが、cronjobを使用しても成功しません。私はwordpressを使ってデータベースとの接続を行っています。私が使用してcrontabファイルを開いた端末でcronjobの結果はlocalhostでcrontabを使用していません

:私は、これまで行ってきた

crontab -e 

をし、入力された:

*/1 * * * * /usr/bin/php /var/www/.../myscript.php 

は私が変更を保存しては/ var /スプール/ cronの中のファイルをチェックします/ crontabs。 myscript.phpの

内容:私は、ブラウザからmyscript.phpを実行すると

<?php 
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
$url = $_SERVER['REQUEST_URI']; 
$my_url = explode('wp-content' , $url); 
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0]; 

include_once $path . '/wp-config.php'; 
include_once $path . '/wp-includes/wp-db.php'; 
include_once $path . '/wp-includes/pluggable.php'; 

global $wpdb; 

$wpdb->query("INSERT INTO mytable (id) VALUES ('1')"); 

?> 

、テーブルが更新されます。私は間違って何をしていますか?

+1

あなたは、 'は/ usr/binに/ php'と試みたことがありますか?また、 '/ var/log/syslog'にあるsyslog(ほとんどの場合)のエラーを見ることができます。 – Epodax

+0

どういう意味ですか? – Student

+0

あなたの仕事に最初の '/' – Farkie

答えて

0

あなたはWebサーバーを持っていないことに気付きました。そのため、$ _SERVER変数にはSERVER_NAMEとREQUEST_URIがありません。

その$パスが正しく入力されないため、必要なファイルが読み込まれません。

通常、いくつかの通知が表示されます(そうでない場合、php.iniの設定が適切ではありません)が、コードは実行されます。 $pathのみが '/'を保持し、サーバーのルートからすべてをロードします。
ファイルが存在しないため、動作しません。

(ブラウジング中に)そのような方法でパスを判断する必要がある場合は、ブラウズするか、CLIで実行しているかを判断する必要があります。この例で

if (php_sapi_name() === 'cli') { 
    $path = 'PATH THAT YOU KNOW, probably /var/www'; 
} else { 
    $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
    $url = $_SERVER['REQUEST_URI']; 
    $my_url = explode('wp-content' , $url); 
    $path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0]; 
} 
+0

あなたは正しいです – Student

関連する問題