外部PHPスクリプトからmodxのAPIを利用してコンテンツのデータベースの値を書き換える方法について
modxを使い始めてまだ間もないのですが、どうしても行き詰まってしまっているのでご質問させて下さい。
現在MAMP上で作業を進めていて、外部PHPスクリプトからmodxオブジェクトを生成してコンテンツのデータベースの値(具体的にはテンプレート変数)を書き換えるという処理を行おうとしています。
以下に従っています。
http://modx.jp/docs/dev/basic.html
また、プログラムの処理自体は一度プラグインとして実装し、期待通りのDB内のデータを書き換えれることを確認しています。現在はPVをカウントする機能を作っているので、PVを定期的に0にリセットする処理を行いたいと思い、cronの利用を考えています。cronからだとプログラムをスクリプトとして用意しておく必要があると思い、現在プラグインで実装したものを通常のPHPスクリプトに書き換えようとしています。
PHPスクリプトは以下です。
<?php
// modxオブジェクト生成
define('MODX_API_MODE', true);
$path = dirname(__FILE__).'/';
include($path.'index.php');
$modx = new DocumentParser;
$modx->db->connect();
$modx->getSettings();
$tmplvars_name = 'pvc.day';
/*
* 日のリアルタイムPVを0にリセット
*/
// ページビューを計測しているか確認
$pv = $modx->getTemplateVarOutput(array('pvc.day'));
if ($pv !== false) {
$res = $modx->dbQuery("SELECT id FROM modx_site_tmplvars WHERE name = '".$tmplvars_name."'");
$arr = $modx->fetchRow($res);
$modx->dbQuery("UPDATE modx_site_tmplvar_contentvalues SET value = 0 WHERE tmplvarid = ".$arr["id"]);
}
ここで、
$ /Applications/MAMP/bin/php/php5.6.7/bin/php ./reset_pv_day.php
のようにスクリプトをを実行すると以下のようなエラーが出ます。
Notice: Undefined index: PATH_INFO in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 170
Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in /Applications/MAMP/htdocs/manager/includes/extenders/sub.document.parser.class.inc.php on line 154
Error
また以下のようにしてmodx libraryを使った方法も試してみたのですが、
// modx apiの読み込み
$path = dirname(__FILE__).'/';
include_once($path.'modxapi.php');
// modxオブジェクトの生成
$modx = new MODxAPI();
以下のようなエラーが出てしまいます。
Notice: Undefined index: PATH_INFO in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 170
Notice: Undefined index: REQUEST_URI in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 130
Notice: Undefined index: SERVER_PORT in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 158
Notice: Undefined index: HTTP_HOST in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 137
MAMP特有の問題かなと思い本番環境でも一応試してみたのですがErrorとなりうまく動作しません。
ご回答いただけますと非常に助かります、よろしくお願い致します...!
現在の環境は以下のようになっています.
- サーバ:MAMP
- MODXのバージョン:1.0.14J-r9
- PHPのバージョン:5.6.7
- MySQLのバージョン:5.5.42
- ブラウザ:Chrome