解決への早道は、遠回りの道です。
今まで正常に動いていて何もしていないのに突然異常が発生するなんてことはほとんどあり得ないことです。もちろんプログラムが原因でということは考えられることですが。
もちろん私も、そう言いたい時が多々ありますが、大抵私が原因です。
一昨日、テストサイトにログインしようとしたらエラーでログインが、できませんでした。1.5.8へアップデート後だったのでそれが原因なのかと、さかのぼって調べていくと結局、Joomla!が読みに行くファイル名と同じファイル名を使っていた事が原因でした。これは、アップデートが原因でも何でもなく単にそのファイルを作成してからログインしたことが無かったことが原因でそう考えてしまっただけでした。勘違いもいいとこです。
以下は、80codeサーバーでのみのことです。
昨日Hackが駄目ってわかってよく考えてみれば(考えなくてもそうだ)PHP_SELFに正しい値が入らないのが原因なのでそれに正しい値を入れてやれば解決することだなと・・・。ややこしい事をしなくても良いのである。
例えば、http://yourdomain.com/がJoomla!1.5で稼働しているすると
Joomla!1.5ルートの index.phpの冒頭に
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = '/index.php';
を書き足せば何もHackしなくて済む。
さらにindex2.phpにも同様に
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = '/index2.php';
を書く。これだけ・・・。バックエンドは何もしなくて良い。要はSEFの時だけ影響を受けるので必要ない。
ルート以下のディレクトリにJoomla!1.5を置いた場合はそのディレクトリ名も追加しなきゃならない。
例えば、http://yourdomain.com/joomla/なら
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] = '/joomla/index.php';
と言った具合に。
$_SERVER['SCRIPT_NAME']をなぜ加えているのかというと、エクステンションによっては、使っているようです。なので同じように初期化してしまいます。
でも、php.iniとかで設定できないのか?・・・。
このサイトを置いている80codeサーバーでは通常のJoomla!のデフォルトの設定では正しく動きません。
異なる点
(私の場合だけのものもあるかもしれない。)
register_globals = Off mbstring.language = neutral mbstring.http_input = auto mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.internal_encoding = UTF-8 default_charset = UTF-8 display_errors = Off magic_quotes_gpc = On magic_quotes_runtime = Off file_uploads = On magic_quotes_sybase = On post_max_size = 10M upload_max_filesize = 10M session.save_path = '/var/www/home/xxxxxx/tmpxxxxx'
AddHandler application/x-httpd-php5 .php
こういったところでしょうか。
気になる点・良い点(私見)
などと、メールで問い合わせがありましたので書いてみました。
Joomla!.1.0.xJP版については、magic_quotes_gpcはOn設定がデフォルトになっています。
標準のhtaccessにJP版として書き足されている行の中にその設定はあります。magic_quotes_gpc Onによる問題は、検索すればたくさんヒットしますので一度一通り読まれても良いと思います。
また、Joomla.orgでは以下のように説明されています。
Adjust magic_quotes_gpc
- Adjust the magic_quotes_gpc directive as needed for your site. The recommended setting for Joomla! 1.0.x is ON to protect against poorly-written third-party extensions. The safest method is to turn magic_quotes_gpc off and avoid all poorly-written extensions, period.
最後の行には、以下のように書かれていると思います。
「最も安全な方法は、magic_quotes_gpcをオフにしてすべての不十分なエクステンションを避けることです。」
でも、こんなの普通わからないですよね~。
Joomla!1.5ではこの設定を無視するようです。なんら指定は、されていません。なのでONになっている場合は、明示的にOFFにしておいた方が良いかもしれません。PHPのマニュアルでは、以下のように書かれています。
警告
この機能は 非推奨 であり、PHP 6.0.0 で 削除 されます。この機能を使用しないことを強く推奨します。
magic_quotes_gpcの設定がONかOFFかは、以下の用にJoomla!のindex.phpにでも書けばわかります。
echo get_magic_quotes_gpc();
と、書いて1と出ればONです。もし、そうなら以下
php.iniなら
magic_quotes_gpc = Off
htaccessなら
php_flag magic_quotes_gpc Off
Joomler!.netの場合ほとんどが(ほとんどと言っても見ての通りFireboardやDocmanなどは使っています)、私の作成したエクステンションなので問題があれば、私が原因です。そう、私がサードパーティーなので、大丈夫!? ってことでmagic_quotes_gpcをOffにしました。管理画面には以下のように警告がでます。
ついでにこれも逆にしちゃえ。
if ( get_magic_quotes_gpc() ) {
$wrongSettingsTexts[] = 'PHP magic_quotes_gpc 設定が `ON` になっています `OFF`へ変更して下さい。';
}と、変更してしまう。
でも、これは使っているエクステンションによっては駄目な場合があるかもしれない。
これって重要でない?
クライアントの担当者が自分用にファイルやそのファイルへのリンクを管理するのに自分しかアクセスできないサイトをWordPressで構築していた。
WordPressのJoomlaとの異なる特徴のひとつとして、記事がマルチなカテゴリに登録できることだと思います。記事がひとつのカテゴリだけに関連しないことってよくあることなのでJoomlaでもできると良いのですが。
少し考えてみた・・・。
エクステンションで、できそうですね。時間があるときつくってみよう。
私もローカルでWordPress環境を作成しました。大きなファイルも扱えるようにphp.iniを設定し直して許可されていない拡張子をwp-includes/functions.phpの1179行からのところに追加しました。ローカルでしかも私しか見ないのでちょっと見せられないようなファイルも置けるようにしました。記事が、マルチカテゴリに属することができるので探すときにはかなり便利になると思います。
Joomlaでと思ったのですが、たまには違うCMSをと思って。
さて、土曜日は某新年会に招かれて(私はひとりで動いているので新年会など無い)、お酒を飲んでトラになりそんなことなどスッカリ忘れた上で早起きし、のんびりと朝風呂に入り
「あ~気持ちいい。」と撮った写真です。
「どうやってこの部屋に来たのか全く記憶にございません。」