2

サーバーのルート ディレクトリにアップロードされる .php ファイルを作成しています。public_html フォルダーへのパスを把握するには、その .php ファイルが必要です。

これを行う必要があるのは、.php ファイルをルートにアップロードして、任意のホスティング アカウントで使用できるようにするためです。多くのホスティング会社は、public_html フォルダーへの異なるファイル パスを使用したり、別の名前を付けたりしているため、それを検出する方法を見つけようとしています。

これを行うには、サーバー変数または簡単なテストがあることが望ましいです。そうでない場合、 public_html フォルダーには常に特定のファイルが含まれているため、この特定のファイルを検索してパスを取得できます。ファイル名の検索がメモリを大量に消費することが心配です。

実行中の .php ファイルは ROOT ディレクトリ内にあり、public_html フォルダーを見つける必要があります。

このように: /home/user/file.php

検出する必要があります

/home/user/public_html/または/home/user/var/www/または/home/user/website.com/html/など。

4

2 に答える 2

5

これに関する課題は、サーバーが非常に多くの public_html を持つことができるため、リクエストのコンテキストの外では、それが何であるかを知る実際の方法がないことです。

この情報を PHP スクリプトから取得するためにできることの 1 つは (ホストにアクセスするための URL がわかっている場合)、次のような docroot.php という名前の php ファイルを作成することです。

<?php
    if ($_SERVER["REMOTE_ADDR"] == '127.0.0.1'){
            echo $_SERVER["DOCUMENT_ROOT"]; 
    }

次に、file.php内で次のようにします

$docRoot = trim(file_get_contents("http://www.mydomain.com/docroot.php"));

これは、サーバーが名前によってローカル インターフェイスを介してそれ自体に解決できることを前提としています。

于 2013-06-21T05:40:02.213 に答える
0

このウェブサイトは、ウェブを精査した後に見つけた唯一の良い解決策を提供してくれました...

$root = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", "", $_SERVER['SCRIPT_FILENAME']);

これが機能する方法は、ファイルのフル パスを取得してから、ファイルの相対パスをフル パスから削除することです。

于 2017-07-06T15:29:39.613 に答える