目次
ディスカッションへの返信 (解決策)
ホームページ バックエンド開発 PHPチュートリアル phpがルートディレクトリにアクセスすることに問題があるのでしょうか?

phpがルートディレクトリにアクセスすることに問題があるのでしょうか?

Jun 23, 2016 pm 01:58 PM
php ルートディレクトリ アクセス

私が使用しているシステムは CentOS で、Web サイトのルート ディレクトリは /var/www/html で、index に require('head.inc.php') を指定すると、head.inc.php がルート ディレクトリに配置されます。 php、すべてが正常です。require('./head.inc.php')の場合は正常ですが、require('/head.inc.php')の場合は、エラーが発生しました。ストリームを開けませんでした。そのようなファイルまたはディレクトリはありません。

先頭のスラッシュはルートディレクトリを表します。設定が間違っていますか? Apache の DocumentRoot と Directory は両方とも /var/www/html に設定されており、www、html、および files は rwxr-xr-x に設定されています。他に設定する必要があるものはありますか?ありがとう!


ディスカッションへの返信 (解決策)

require('/head.inc.php') は /var/www/html/head.inc.php を参照します。これは、php が head.inc.php がphp ファイルではなく、パスの下の html ディレクトリ内のファイルです。

または、次のように書くこともできます: require(dirname(__FILE__).'/head.inc.php')

require は、Web のパスの代わりにファイル システムのパスを使用します

changjay と xuzuning ありがとうですが、 dirname( __FILE__) は現在のファイルのパスを取得しますよね。たとえば、ルート ディレクトリを取得したいとします。たとえば、サブディレクトリ ファイル /var/www/html/report/index.php がある場合、dirname( を使用する場合は、ルート ディレクトリに head.inc.php も必要になります。 __FILE__)、「/var/www/html/report/head.inc.php」になります

モデレーターがファイルシステムのパスについて言及したのが原因だと思います。/ に変更してみます。 var/www/html/head.inc.php

Web サイト ノードのルート ディレクトリが適切に構成されていないためですか?

モデレーター、ファイル システム ディレクトリに変更してみましたが、うまくいきました。

zmzkkk、Apache の DocumentRoot と Directory を /var/www/html に設定しました。他に変更する必要があるものはありますか?

インターネットでは、/ を使用することはルートディレクトリを意味すると言われていますが、この問題については長い間グーグルで調べましたが、これについて言及している人はほとんどいませんでした。解決策は?今夜投稿します

はい / はルート ディレクトリを意味します

Web サイトを構築しているので、2 つのシステムに直面する必要があります。つまり、ルートが 2 つあります
Web サイトのファイルは、オペレーティング システムのファイル システムに保存されます。 /var/www/html、/ はファイル システムのルートです
ブラウザは http://localhost /index.php にアクセスします、/ は Web システムのルートです

Web システムのルートは、ユーザーが指定します
DocumentRoot = /var/www/html などの Web サーバー

実際、php はすでに解決策を提供しています: include_path

changjay と xuzuning に感謝しますが、 dirname(__FILE__) は現在のファイルのパスを取得します。右?たとえば、ルート ディレクトリを取得したいとします。たとえば、サブディレクトリ ファイル /var/www/html/report/index.php がある場合、dirname( を使用する場合は、ルート ディレクトリに head.inc.php も必要になります。 __FILE__)、「/var/www/html/report/head.inc.php」になります

モデレーターがファイルシステムのパスについて言及したのが原因だと思います。/ に変更してみます。 var/www/html/head. inc.php

構成ファイルがある場合は、まず Web サイトのルート ディレクトリを構成ファイル内の変数に割り当ててから、必要に応じてそれを使用できます。

モデレータさん、ありがとうございます。しかし、/etc/php.ini の include_path=".:/var/www/html" を変更しましたが、依然としてエラーが表示されます: Fatal error: require() [function.require]: Failed xxx の '/head.inc.php' (include_path='.:/var/www/html') を開く必要があります


変更後に Linux を再起動し、var、www、html、および html の下にあるすべてのファイルが 755 であることを確認しました。 SeLinux(getenforce=permissive) ですが、まだ間違っています。あなたが言ったように、require('/var/www/html/head.inc.php') に変更するだけです。もう一度確認します

Novolee、グローバル変数についても考えましたが、絶対パスは依然としてリークされますphp コード内で

別の変数 $_SERVER['DOCUMENT_ROOT'] があることがわかりました。この変数を使用して / を置き換えるとうまくいきました

なぜ / を直接使用できないのですか?は別の変数 $_SERVER['DOCUMENT_ROOT' ] です。この変数を使用して / を置き換えると、再び機能します

/ を直接使用できないのはなぜですか?

? などのアプローチを受け入れてください。 / コマンドラインを使用する予定がない限り、これでうまくいきます

別の変数 $_SERVER['DOCUMENT_ROOT'] があることがわかりました。この変数を使用して / を置き換えると、再び動作します

なぜ / を直接使用できないのですか?

以前に誰かが答えませんでしたか? / を直接使用して、サイトのルート ディレクトリではなく、オペレーティング システムのファイル システムのルート ディレクトリを表します。

PhpNewnew、私の Web ページにはいくつかのレイヤーがありますが、header.inc.php と CSS スタイル シートはすべてルート ディレクトリに配置されているため、これらをルート ディレクトリから直接ロードする方がはるかに便利です。 ./ は現在のディレクトリのみを読み取ることができます

Novolee はそうですが、php では /var/www/html/head.inc.php として記述する必要があります。そのようなパスが誤って表示されるのではないかと少し心配です。ということで、今でも「DOCUMENT_ROOT」を使っています
皆さん、投稿していただきありがとうございます

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles