web-dev-qa-db-ja.com

PHP include-ストリームを開くことができませんでした:そのようなファイルはありません

HTMLでWebサイトを作成しましたが、ヘッダーとナビゲーションバーの部分を1つのファイルにまとめたいので、一度変更するだけで済みました。すべてのページを.phpに変更し、phpインクルードを追加しました。ただし、フォルダに入れたページでエラーが発生するため、無謀なリンクを作成できます。

ヘッダーファイル:/test/assets/header.php

動作:/test/index.phpには<?php include 'assets/header.php'; ?>が含まれています

エラーをスローします:/test/company/index.phpには<?php include '/test/assets/header.php'; ?>が含まれます

エラー:

Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory

Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

ルートフォルダ内のフォルダにあるヘッダーファイルへのリンクに問題があります。 URLの入力方法がわからないという単純な問題だと思います。 header.phpへのフルパスを含めようとすると、URL file-access is disabledエラーが発生します

5
michaellindahl

/でパスを開始する場合、それは絶対パスです。仮想ではなく、実際のファイルシステムルートディレクトリへの絶対メイン document root 。これが失敗する理由です。

一般的にこれは意味されたものです:

include "$_SERVER[DOCUMENT_ROOT]/test/assets/header.php";
// Note: array key quotes only absent in double quotes context
13
mario

私も同じ警告に直面していました:

Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory
Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

私は次の解決策でそれらを解決しました:

パスを定義してから、次のようにinclude関数を使用する必要があります。

define('DOC_ROOT_PATH', $_SERVER['DOCUMENT_ROOT'].'/');
require DOC_ROOT_PATH . "../includes/pagedresults.php";

その後、任意のディレクトリ構造を使用できます。

5
Ramiz Syed

それはnot URLです。これはファイルパスです(ただし、サーバー構成で許可されている場合は、can use full URLを使用します)。