外部PHPスクリプトからAPIを利用してコンテンツのデータベースの値を書き換える方法について...

質問全般・改善要望
返信する
temper
メンバー
メンバー
記事: 1
登録日時: 2015年6月04日(木) 16:14

外部PHPスクリプトからAPIを利用してコンテンツのデータベースの値を書き換える方法について...

投稿記事 by temper »

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
-----
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: 外部PHPスクリプトからAPIを利用してコンテンツのデータベースの値を書き換える方法について...

投稿記事 by yama »

コード: 全て選択

Notice: Undefined index: REQUEST_URI in /Applications/MAMP/htdocs/manager/includes/initialize.inc.php on line 130
この部分が奇妙に感じます。$_SERVER['PATH_INFO']などが存在しないことはあるのですが。サーバ側(PHP側)に何か問題があるような気がします。
返信する