0

いくつかの古い php スクリプトをクリーンアップしているときに、変数を使用しようとすると、require/include ステートメントで奇妙な動作が発生することに気付きました。

ライブサーバーでは、次のコードは正常に動作します..

<?php
$test = "http://localhost/elearning/trunk/mypage.php";
require "$test";
?>

..しかし、私のXAMPPインストール((基本パッケージ)バージョン1.6.7)では、次のエラーが表示されます。

警告: require() [function.require]: C:\Documents and Settings\username\Desktop\xampp-win32-1.6.7\xampp\htdocs\elearning\trunk\test のサーバー構成で URL ファイル アクセスが無効になっています22行目の.php

警告: require( http://localhost/elearning/trunk/mypage.php ) [function.require]: ストリームを開けませんでした: C:\Documents and Settings\username\Desktop\xampp-win32 に適切なラッパーが見つかりませんでした-1.6.7\xampp\htdocs\elearning\trunk\test.php 22 行目

致命的なエラー: require() [function.require]: 必要な ' http://localhost/elearning/trunk/mypage.php ' (include_path='.;C:\Documents and Settings\username\Desktop\xampp-win32 ) を開くことができませんでした-1.6.7\xampp\php\pear\') C:\Documents and Settings\username\Desktop\xampp-win32-1.6.7\xampp\htdocs\elearning\trunk\test.php の 22 行目

http://localhost/elearning/trunk/mypage.php (エラーから直接)をコピーしてブラウザーに貼り付けると、mypage.php が読み込まれます。これは私の構成または私のアプローチのエラーですか?

4

4 に答える 4

3

セキュリティ上の理由から、一部のサーバーでは http:// で始まるパスを使用できません。代わりに使用したいのは、ディレクトリ パスです。

次のようなことを行うことで、現在のディレクトリパスを取得できます
echo $_SERVER['DOCUMENT_ROOT'];

これにより、サーバーのルート フォルダーからのディレクトリ パスが得られます。これは、ものを含める/要求するために使用するパスです。


よくわからない場合は、これを試してください。

パスには次の 2 種類があります。

World Wide Web パス:
http://example.com/directory/file.php

サーバー ディレクトリ パス:
/home/usr/www/site/html/

サーバー ディレクトリ パスは、サーバーのハード ドライブ上でファイルが配置されている場所です。コンピュータのハード ドライブと同じように、ファイルを移動しない限り変更されることはありません。一方、World Wide Web パス (誰もが Web サイトにアクセスするために使用するパス) は、使用しているドメイン、ドキュメント ルートが指している場所、Mod の書き換えなどに基づいて変化する可能性があります。

注: ドキュメント ルートは、サーバーがファイルを提供する最上位のディレクトリです。したがって、ドキュメント ルートに index.php がある場合、Web 上では http://example.com/index.phpのように表示されます。

PHP がファイルを検索するとき、PHP はサーバー上で実行されているため、サーバー ディレクトリ パスを使用します。ユーザーのコンピューターから実行される Javascript がファイルを検索する場合、サーバーからアクセスするのではなく、World Wide Web パスを使用してアクセスします。

そこのどこかで何かが理にかなっていることを本当に願っています。

于 2009-07-31T01:20:46.797 に答える
1

正確なディレクトリ全体ではなく、require "./mypage.php" を試してください

于 2009-07-31T00:59:35.123 に答える
1

PHP は、そのような URL 表記を使用する場合に同じサーバーからインクルードしていることを認識できるほど賢くないため、別のサーバーからファイルを取得していると見なします (これは危険な場合があります)。

サーバー構成は、これらの外部ファイルのロードを許可しないように設定されているため (「URL ファイル アクセスはサーバー構成で無効になっています」というエラー メッセージで明らかです)、失敗しています。

同じサーバー上にいるため、次のような相対パスを使用できます。

require_once 'mypage.php'
于 2009-07-31T01:21:02.333 に答える
0

そのようなパスを使用しないでください...相対パスまたは絶対パスを使用してください。

require 'mypage.php'
于 2009-07-31T01:02:03.170 に答える