0

問題は非常に単純です..そう思われるでしょう。


エラー:

警告: include(includes/navigation.php): ストリームを開けませんでした: No such file or directory in C:\xampp\htdocs\sub_page\about.php on line 27

警告: include(): C:\xampp\htdocs\sub_page\about.php の 27 行目に含めるために 'includes/navigation.php' を開くことができませんでした (include_path='.;C:\xampp\php\PEAR')


サイトを作り直しています。現在、私はそれをPHPに接合しています。同じように、私も方法を行っています。今回を除いて、私はそれをより構造化しています。私のコードの例。

<!-- Start Navigation -->
<?php include 'includes/navigation.php'; ?>
<!-- End Navigation -->
<!-- Start Top Menu -->
<?php include 'includes/top_menu.php'; ?>
<!-- End Top Menu -->
<!-- Start Promo Menu -->
<?php include 'includes/pro_menu.php'; ?>
<!-- End Promo Menu -->

したがって、ファイル ナビゲーションがルートにある include フォルダーにあるようにします。上記のコードが「1」ではなく「2」レベルのサービスページにあるとしましょう。通常、私はディレクトリの「1」レベルしか持っていないので、単純に変更します

<?php include 'includes/navigation.php'; ?>

これに

<?php include '../includes/navigation.php'; ?>

うまくいきました。

上記のコードは、次のサービス ページにあります。

/sub_page/services/services.php

services.phpファイルを上記のディレクトリパスからルートに近い1レベルに移動した場合

/sub_page/services.php

インクルードのパスを次のように変更します

<?php include '../includes/navigation.php'; ?>

それは正常に動作します。どこからでもファイルを呼び出せるようにする必要があります。誰もこれを行う方法を知っていますか? ありがとう!


編集:例として以下を使用します。この行でパスエラーを引っ張っていました

<?php include 'sub_page/about_us/includes/meta.php'; ?>

代わりに以下を使用できました

<?php include __DIR__ . "/includes/meta.php"; ?>

それを修正します。ただし、パスからディレクトリレベルを追加または削除しようとすると、再びエラーが返されます。同じことは、他の行/パスでは機能しません。

<?php include 'includes/navigation.php'; ?>

<?php include __DIR__ . "/navigation.php"; ?>

何か案が?

4

2 に答える 2

1

PHP のインクルード パスを設定して、これらのファイルを「検索」します: http://php.net/manual/en/function.set-include-path.phpまたは絶対パスを使用します。

于 2013-06-27T16:56:22.763 に答える
0

私があなたを正しく理解していれば、異なるレベルにある他のファイルにファイル (services.php) を含めたいと考えています。インクルードされたファイル自体には、他のファイルが含まれています。

services.php では絶対パスを使用する必要があります。

include __DIR__ . "/navigation.php";

次に、services.php をどのディレクトリ レベルからインクルードするかは関係ありません。__DIR__services.php がどこに含まれていても、services.php の正しいパスが常に存在します。

編集:多分もっと明確です...

ディレクトリツリーを想定:

<htdocs>/index.php
<htdocs>/includes/meta.php
<htdocs>/includes/navigation.php
<htdocs>/sub_page/about.php

navigation.php は、meta.php によってインクルードされます。
meta.php は、index.php と about.php によってインクルードされます。

インクルードのパス:

meta.php: include __DIR__ . "/navigation.php";
index.php: include "includes/meta.php";
about.php:include "../includes/meta.php";

他のファイルには、そのディレクトリ レベルに応じたパスを持つ meta.php を含めることができるようになりました。__DIR__meta.phpのは常に、navigation.php への正しいパスを提供します。

于 2013-06-27T16:55:56.513 に答える