2016-10-14 41 views
1

[問this at SU;建議有在重新發布SO]

我們在使用PHP程序$ _ SERVER [「DOCUMENT_ROOT」]作爲一個地方,我們可以把一個私人目錄(使用唯一的名稱)的路徑服務器上一個安全,已知的地方。該目錄保存從多個可能的數千個服務的PHP頁面收集的數據摘要;該摘要對所供頁面的主要功能沒有影響,並且最終可以被忽略或刪除。雖然存在,但基於PHP的工具可以檢查摘要數據並提供報告。

這已經在多種PHP服務器的運行良好,似乎是 「自動」 設置根據PHP Manual documentation(?):

'DOCUMENT_ROOT'

The document root directory under which the current script 
    is executing, as defined in the server's configuration file. 

我們多年來安裝了幾個不同的PHP服務器,並且他們似乎都將預先配置爲合理的路徑,而不需要我們明確的配置工作。

我們有一些客戶使用我們的軟件,抱怨這條路徑似乎設置爲空,這與上面的定義似乎不一致。 (null表示一些特殊的路徑?)(其中一個客戶聲稱他們有(php -v)「PHP 5.6.16-3 + deb.sury.org〜trusty + 1(cli)... Zend Engine v2.6.0 ,...「和(uname -or)」3.19.0-25-generic GNU/Linux「[?? GNU/Linux ??]

Pardon我的無知,但是DOCUMENT_ROOT是一個可配置的項目嗎?我在哪裏可以找到服務器的「配置文件」嗎?它是否適用於所有不同的PHP服務器實現?是否可以/應該更改該配置文件以明確設置它未設置?

如果不是,有另一種方式,以提供一個安全的長期「臨時」本地目錄的路徑?

+3

這是由webserver配置爲代碼運行的特定站點/虛擬主機設置的。在Apache中,這實際上是'DocumentRoot/foo/bar/baz'。這不是你可以(或者想要)在PHP中重寫的東西。 –

+2

我不知道'$ _SERVER ['DOCUMENT_ROOT']'可能是'null',除非您通過命令行執行PHP,在這種情況下,沒有文檔根目錄。 – Mike

回答

1

$_SERVER['DOCUMENT_ROOT']在您的apache httpd.conf中找到並且可以進行配置。這是您將爲其提供文檔的目錄。默認情況下,所有Web請求都來自該目錄,因此它不應該爲空。

這個鏈接可以讓你迅速瞭解爲什麼documentroot是在:http://httpd.apache.org/docs/2.4/urlmapping.html#documentroot

我個人沒有看到使用$_SERVER['DOCUMENT_ROOT']的問題,因爲我有完全控制權的服務器,但是由於配置中的別名,我會謹慎使用共享主機解決方案上的此路徑引用。在這種情況下,我只需手動設置$_SERVER['DOCUMENT_ROOT']

<?php 

echo $_SERVER['DOCUMENT_ROOT'];//Real Path 

$_SERVER['DOCUMENT_ROOT'] = "/new/path/www"; 

echo $_SERVER['DOCUMENT_ROOT'];//New Path 

?> 
相關問題