2019/06/19 23:52 JST

Geeklog Japan Forums

downloadsプラグインとURLリライトの関係なのか?

ページナビゲーション


状態: オフライン

sn3

Forum User
Junior
登録日: 06/02/08
投稿数: 6
1.8.1にアップグレードするためにサーバー移転しようといくつかの候補で作業していますが、今朝、downloadsプラグインへのリンク http://○○○/downloads/index.php をクリックすると、次のメッセージが表記されました。 URL Class: number of names passed to setArgNames must be equal or greater than number of arguments found in URL このリンク先をいじっているうちに末尾に/スラッシュ http://○○○/downloads/index.php/ を入れると表示されることに気づきふと思いついたのがURLリライトで、これをオフにしたところ、問題なく表示されるようになりました。 しかし問題の根本が判っている訳ではありません・・・他所ではURLリライトONでも動いていますので、あくまでも対処療法的な報告です。 そういえばphpのバージョンを5.2から5.3にしたなと思いつき、5.2に戻してみましたが・・・変わりませんでした(汗) Filemgmtプラグインは外しました。 とりあえず動いていますし、私もデータベースなど判りませんので良いのですが、旧ファイル管理とは比べ物にならないくらいDownlordsプラグインのインターフェースは素晴らしく、とても気に入っていますので、もし時期バージョンアップや何かの参考になればと思って書き込ませていただきました。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
今までダウンロードプラグインはURLリライトで問題なくうごいていたのに、 急にうごかなくなり、最後にスラッシュをつけたらうごくようになった、 というのであればサーバーの会社に問い合わせるのがよいかと思います。 現在稼働させているサーバーがどこかがわかればもうすこしレスが できるかとおもいますが。 いままでこういったトラブルはありませんし、このサーバでもうごいていますので、 原因は残念ながら思い当たりません Frown

状態: オフライン

dengen

Site Admin
Admin
登録日: 11/23/06
投稿数: 191
こんにちは、dengenです。 http://○○○/downloads/index.php このURLの場合、「number of arguments found in URL」は 0 なので通常起こり得ないエラーです。 http://○○○/downloads/index.php/foo このURLの場合は 1 です。 このエラーは、[公開領域]/downloads/index.phpの481行目付近、
PHP Formatted Code
COM_setArgNames(array('id'));
において発生しています。 この部分の直前に次のようにテストコードを追加して、
PHP Formatted Code
print_r($_URL->numArguments());exit; // test code
COM_setArgNames(array('id'));
http://○○○/downloads/index.php にアクセスするとどんな数字が表示されますか? 通常では 0 が表示されるはずです。 これが 2 以上だとエラーになります。

状態: オフライン

sn3

Forum User
Junior
登録日: 06/02/08
投稿数: 6
Ivyさん、dengenさん、ありがとうございます。 dengenさんの書かれたとおりにやってみると、URLリライト「いいえ」で0、「はい」で3が返ります。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
sn3さん、 サーバー環境をできるだけくわしくおしえてください。 また、いつからそういった状況になったのか、も。

状態: オフライン

dengen

Site Admin
Admin
登録日: 11/23/06
投稿数: 191
テストしていただき、ありがとうございます。 では、次のようにテストコードを変えて、もう一度テストをお願いします。
PHP Formatted Code
// test code -->
print_r(
  "SERVER['PATH_INFO'] : {$_SERVER['PATH_INFO']} ; " .
  "ENV['ORIG_PATH_INFO'] : {$_ENV['ORIG_PATH_INFO']} ; " .
  "SERVER['ORIG_PATH_INFO'] : {$_SERVER['ORIG_PATH_INFO']} ;"
);
exit;
// test code <--
COM_setArgNames(array('id'));
 

状態: オフライン

sn3

Forum User
Junior
登録日: 06/02/08
投稿数: 6
dengenさん度々ありがとうございます。 SERVER['PATH_INFO'] : ; ENV['ORIG_PATH_INFO'] : /○○○/downloads/index.php ; SERVER['ORIG_PATH_INFO'] : /○○○/downloads/index.php ; このように表示されます。

状態: オフライン

dengen

Site Admin
Admin
登録日: 11/23/06
投稿数: 191
テストをありがとうございます。 これで最初のテストで「3」がかえる理由が分かりました。 つまり、「○○○」、「downloads」、「index.php」の3つを数えた結果です。 でも、これはGeeklogシステムが期待した値の数ではないです。 Geeklogが$_ENV['ORIG_PATH_INFO']や$_SERVER['ORIG_PATH_INFO']に期待した値とは異なります。 期待する側のGeeklogが間違っているのか、それとも$_ENV['ORIG_PATH_INFO']や$_SERVER['ORIG_PATH_INFO']の値が間違っているのか私には判断できません。 私の環境では$_SERVER['PATH_INFO']、$_ENV['ORIG_PATH_INFO']、$_SERVER['ORIG_PATH_INFO']の全てが空の値でした。 もしかしたら、Geeklog側に「/○○○/downloads/index.php」の文字列を事前に取り除く処理を加えれば良いのかもしれません。 参考のため、もうひとつテストをお願いしたいのですが、 テストコードはそのままで、次のページにアクセスした場合は、どのような文字列が返ってきますか? http://○○○/downloads/index.php/foo fooは、あなたが登録したダウンロードファイルのファイルIDです。 そのままの「foo」ではなくて、存在するファイルIDに置き換えてください。

状態: オフライン

sn3

Forum User
Junior
登録日: 06/02/08
投稿数: 6
SERVER['PATH_INFO'] : /foo ; ENV['ORIG_PATH_INFO'] : /○○○/downloads/index.php/foo ; SERVER['ORIG_PATH_INFO'] : /○○○/downloads/index.php/foo ; このように返ります。

状態: オフライン

dengen

Site Admin
Admin
登録日: 11/23/06
投稿数: 191
テストをありがとうございます。 $_SERVER['PATH_INFO']や$_SERVER['ORIG_PATH_INFO']は、サーバー環境(IIS、Apache、CGIモードのPHP、レンタルサーバーの運用方針など)によってはいろいろな値が入るようです。 では、テストコードを取り除き元に戻した上で、 少々強引な対策を試してみていただきたいのですが、 公開領域のsiteconfig.phpの一番下あたり(ただし一番最後の'?>'のすぐ上辺りに)に
PHP Formatted Code
$_SERVER['PATH_INFO'] = substr($_SERVER['ORIG_PATH_INFO'], strlen($_SERVER['SCRIPT_NAME']));
 
を追加してみてください。 これで解決するでしょうか?

ページナビゲーション

時刻はすべて JST , 現在の時刻は 11:52 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック