2

私はphpでウェブサイトを開発しています。自分のパソコンにwampをインストールしており、ウェブサイトのファイルはwampのwwwフォルダーにあります。www をルート フォルダーと見なすと、ルート フォルダーにテンプレート フォルダーがあり、テンプレート フォルダーに header.inc.html ファイルがあります。絶対パスを使用してこの header.inc.html ファイルを他の php ファイルに含めようとすると、include('/template/header.inc.html');「ストリームを開くことができませんでした: そのようなファイルまたはディレクトリはありません」というエラーが表示されますが、同じ絶対パスを使用して単純な html リンクを作成するとパスは完全に機能し、ファイルを開きます。以下は私のテストコードです

<?php
echo '<a href="/template/header.inc.html">headerfile</a>';
include('/template/header.inc.html');
?>

たとえば、インクルード関数へのフルパスを指定 C:/wamp/www/template/header.inc.htmlすると、正常に機能します。

この問題は私のワンプサーバーでのみ発生しており、どのウェブホストサーバーでも完全に機能するか、または同じ問題がウェブホストに存在する可能性があることに混乱しています

私の混乱を明確にする助けをいただければ幸いです、ありがとう。

4

3 に答える 3

3

サーバー上の絶対パスは、サーバーのハード ディスク ( C:\) から始まります。
クライアントの絶対パスは、Web サイトのルート ( http://example.com/) から始まります。

于 2012-06-07T12:02:27.537 に答える
2

を使用し__DIR__て、ディスク自体のphpファイルに関連するファイルをディスク上に作成できます。

include(__DIR__.'/template/header.inc.html');

これで問題が解決するはずです。

両方のタイプのパス (関連していても) は 2 組の靴であるため、違いを説明するのはそれほど簡単ではありません。Web サイトでリンクする方法、ファイルの場所、Web サーバーの構成との関係を説明する、非常に基本的な HTML Web サイトのチュートリアルから始めることをお勧めします。

于 2012-06-07T12:03:16.913 に答える
1

HTMLページは、サーバーのフォルダ構造について何も知らないクライアントのブラウザに存在し、ドメイン名に関連しています。http://example.com/

PHPプログラムはサーバー側で実行され、サーバーフォルダーを処理します。phpプログラムにフルパスをハードコーディングしないでください。これは、開発サーバーとライブホストの間でフルパスを移動するときに問題が発生するためです(例を挙げると)。したがって、phpファイルでは、ファイルへの相対パスを使用するか__DIR__、phpファイルがあるディレクトリに置き換えられるマジック定数を使用する必要があります。

1.)最初のアプローチ:include('template/header.inc.html');

2.)2番目のアプローチ:include(__DIR__ .'/template/header.inc.html');

あなたの場合(開発マシンで作業している)、クライアントとサーバーの両方が同じボックスであるため、混乱する可能性があります。

于 2012-06-07T12:11:24.197 に答える