ページ 1 / 1
1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 22:56
by saki...
こんばんは
1.0.9J のクリーンインストールで現象が再現したので報告します。
原因については私のほうでも調査をしていますが、よく判りません。
あまり検証していませんが、上書きコピーでインストーラーを動かす前なら、表示されるっぽいので、
インストール・アップグレード操作で何か起きている模様です。
・クリーンインストール(展開した 1.0.9J をそのまま配置、httpdの alias で /dev/に割り当て、.htaccess をセット)
デモサイト無し
・インストール終了後、管理画面には入って操作は可能。
・サイトをプレビューなどで表示すると、「Missing base_url」の表示になる。
以下はシステム情報の詳細情報の抜粋です。サーバーはローカルの仮想マシンで立てています。
- Apache/2.2.15 (CentOS)
OS Linux 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed Mar 13 00:26:49 UTC 2013 x86_64
PHPのバージョン 5.3.14
セーフモード off
php_sapi_name apache2handler
MySQLのバージョン 5.6.10
MySQLホスト情報 Localhost via UNIX socket
MODXのバージョン 1.0.9J
サイトのURL http://centos6.local/dev/
ホスト名 centos6.local
MODX_BASE_URL /dev/
httpd の acces.log でも下記のとおりですので、サブディレクトリに入れた設定自体は問題なさそうです。(ローカルのサブネットは伏字にしました)
192.168.***.2 - - [21/Mar/2013:22:35:32 +0900] "GET /dev/index.php?id=1 HTTP/1.1" 200 16 "http://centos6.local/dev/manager/index.php?a=1&f=tree" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0"
1.2.0J-b2 までは特に問題なく動いていました。各 php ファイルの差分を追いかけていますが、原因がよくわかりません。
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:05
by yama
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:07
by yama
間違えました、緑の部分を赤に戻す、です
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:23
by saki...
お手数をおかけします。
ご指摘の書き戻しは効果がありませんでした
コード: 全て選択
echo "[{$_SERVER['SCRIPT_FILENAME']}]<br />";
echo "[{$_SERVER['SCRIPT_NAME']}]<br />";
if(strpos(str_replace('\\','/',$_SERVER['SCRIPT_FILENAME']),$_SERVER['SCRIPT_NAME'])===false)
該当処理の前に上記の echo 入れて確認したところ、
[/var/www/modx-1.0.9J-dev/index.php]
[/dev/index.php]
Missing base_url
となったので、$_SERVER['SCRIPT_NAME'] にサブディレクトリがくっついているのが原因らしいのですが、
なぜそのように変化したのでしょうか。。。
23:31 追記
うまく動いている 1.2.0-b2 に同じエコー文を入れてみたところ、変数が出力されなかったので、もともと関数が働いていなかった
(別のところで $base_path が設定されていた)ように思えます。
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:37
by yama
$_SERVER['SCRIPT_FILENAME']が/var/www/modx-1.0.9J-dev/index.phpになっているのが気になります。
/modx-1.0.9J-dev/というのは、何か心当たりはありますか?
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:38
by yama
saki... さんが書きました:うまく動いている 1.2.0-b2 に同じエコー文を入れてみたところ、変数が出力されなかったので、もともと関数が働いていなかった
(別のところで $base_path が設定されていた)ように思えます。
ですね。なぜか if(strpos(str_replace('\\','/',$_SERVER['SCRIPT_FILENAME']),$_SERVER['SCRIPT_NAME'])===false) に判定が渡っているので、そこが少し気になります
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:40
by saki...
サイトをドキュメントルートとは別に配置して conf.d のエイリアスで下記のとおり設定しています。
Alias /dev /var/www/modx-1.0.9J-dev
サイトは http://centos6.local/dev に出来上がります。
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:47
by yama
なるほどそういうことなら。
https://github.com/modxcms-jp/evolution ... aec41ef25c
さっき上記を書き換えてうまくいかなかったとのことですが、書き換えたうえで、管理画面のキャッシュをクリアするか、グローバル設定を空更新してみてください。
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:55
by saki...
ふむむ。。。
manager/includes/initialize.inc.php を次のとおり書き戻しして、サイトリフレッシュ、管理画面のログインログアウト
を繰り返してみましたが、やはり状況が変わっていません。assign_base_url($base_path)が呼ばれてしまうようです。
コード: 全て選択
<?php
// check PHP version. MODX Evolution is compatible with php 4 (4.4.2+)
if(version_compare(phpversion(), '5.0.0') < 0)
{
echo 'MODX is compatible with PHP 5.0.0 and higher. Please upgrade your PHP installation!';
exit;
}
// automatically assign base_path and base_url
if(!isset($base_path)) $base_path = assign_base_path();
if(!isset($base_url)) $base_url = assign_base_url($base_path);
if(!isset($site_url)) $site_url = assign_site_url($base_url);
if(!isset($core_path)) $core_path = "{$base_path}manager/includes/";
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月21日(木) 23:59
by yama
assets/cache/sitePublishing.idx.php内の$base_urlが使われるはずですが、変ですね。
global宣言しちゃえばとりあえず簡単に解決できそうですが、そのへんはあまり変えてないはずなので少し気になります。調べてみます
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月22日(金) 00:02
by saki...
上記のキャッシュファイルの中を調べてみたらこんな感じで、$base_url は無いみたいです。
コード: 全て選択
<?php
$cacheRefreshTime = 0;
$cache_type = 1;
$site_sessionname = 'bayn3d6gsygcc0o8w8sg0w0w8';
$site_status = '1';
$error_reporting = '1';
$site_url = 'http://centos6.local/dev/';
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月22日(金) 00:13
by yama
そうすると・・・グローバル設定の更新が関係してるかも。グローバル設定の「ベースURL」が正しい値であることを確認のうえで、グローバル設定を更新していただけますでしょうか。
Re: 1.0.9J でページが表示されない。 【解決済み】
Posted: 2013年3月22日(金) 00:20
by saki...
設定途中で、グローバル設定のベースURL を消していたようです。
・グローバル設定のベースURLを書き込む
・initialize.inc.php の先頭3行を前の状態に戻す
との処置で表示されるようになりました。
お手数をおかけしました。
ありがとうございます。(とりあえず、本番サイトのバージョンアップにとりかかれます^^;;)
Re: 1.0.9J でページが表示されない。
Posted: 2013年3月22日(金) 00:22
by yama
saki... さんが書きました:・initialize.inc.php の先頭3行を前の状態に戻す
ここが重要だったみたいですね。レポートありがとうございました。この部分は元の状態が正しいので戻します。