2011-12-18 141 views
1

好吧,我已經試過了一切,這是迄今爲止最好的地方,我想在此創建文檔根目錄httpdocs/[folder]/html,並且我有我想要的php包含文件去根(require '../[folder]/file.php']以上,但不能訪問比/var/www/vhosts/example.com/httpdocs更遠。我知道我受限於open_basedir,因爲價值仍然是httpdocs/[folder]/htmlphpinfo()但是對於我的生活,我無法改變當地的價值!嘗試在文檔根目錄外包含文件(Plesk 10)

這是我到目前爲止已經試過: 我已經看到了這一點 - How to include file outside document root? - 創造了「vhost.conf」是STIL坐在conf目錄下,重新配置文件,重新啓動Apache的...什麼都沒有。這是一個很好的帖子,但似乎有點過時了。

我編輯php.ini文件本身open_basedir = '/var/www/vhosts/example.com/httpdocs,上傳它備份到它在哪裏,重新配置,重新啓動 - 沒有什麼

我掏出「的httpd.conf」從其他的conf添加相同的行編輯它文件,(vhost.conf),把它放回 - 沒有,然後我試圖做什麼godaddy在這裏說 - http://help.godaddy.com/article/1616並添加行php_admin_value open_basedir none' to 'httpd.conf - 沒有運氣。

現在是0435,我幾乎可以睜大眼睛 - 這個網站將於明天在2000年推出!預先感謝任何願意/能夠閱讀和/或幫助的人。

更新:感謝快速反應,這裏是最好的答案,我可以給你:

它是否給你一個錯誤?

是的,我得到了一個服務器錯誤,並通過我的服務器錯誤日誌,具體如下:

PHP的警告:要求()[function.require]:實際上open_basedir的限制。文件(/ var/www/vhosts/[example.com]/httpdocs/[文件夾]/[安全php文件存在的文件夾]/[file.php])不在允許的路徑內:

所以我99.99%肯定是因爲open_basedir的限制。

你確定你的網絡服務器被設置爲虛擬主機的所有者嗎?

我敢肯定,我有點新的控制服務器,我真的不知道這意味着什麼究竟,但我通過Godaddy的虛擬專用服務器,運行的Parallels Plesk v10.3.1,我做上面的文件移動通過Shell SSH。

在Plesk中,我可以將'Document root'更改爲任何低於/var/www/vhosts/example.com的值,Plesk會將'open_basedir'更改爲我設置的任何值。例如,如果我在Plesk中將文檔根目錄設置爲'httpdocs',那麼'open_basedir'將被更改爲相同的文件夾,並且一切正常。問題是,我不希望在/httpdocs/[folder]

公衆獲得的一切我的目標是我想「文檔根目錄」更改爲/httpdocs/[folder]/html和「的open_basedir到/httpdocs,但我不能改變局部值在open_basedir出於某種原因。我想這樣做是出於安全目的,所以人們只能直接訪問非重要的PHP文件,但PHP本身我想給更多的文件夾訪問權限。

你想包括使用相對或絕對路徑?

我在php文件路徑,我試圖以包括/需要對上述「文檔根目錄」文件長相酷似格式:

require '../[folder where secure php files exist]/file.php';

如果我正確認識你,我沒有使用服務器的整個路徑。

+0

它給你一個錯誤?你確定你的網絡服務器設置爲虛擬主機/ ?你是否嘗試使用相對或絕對路徑? – SeanNieuwoudt 2011-12-18 09:53:40

+0

不幸的是,Plesk是由一些對網站知之甚少的人設計的。您的文件必須位於公共目錄樹下或專用目錄下(現在允許PHP訪問專用目錄)。 – 2011-12-18 17:38:08

+0

是的,檢查我做的最後一次更新,我解決了原始問題,但由於某種原因,服務器跳過了我所有的嵌入文件(css,js,php,圖像,視頻)。我甚至將'open_basedir'設置爲'none',但它仍然忽略它們,所以它不再是'open_basedir'問題。我在index.php上看到了所有我的無格式html,但是我沒有收到任何錯誤,我的腳本'需要'一堆文件!在php.ini..ugh中必須打開或關閉一些東西! – phpKid 2011-12-18 17:57:07

回答

0

答:(這已更改爲答案):

顯然,在Plesk中10,Plesk的程序集無論「文檔根目錄」路徑將是,到「open_basedir的」,但沒有用戶友好的方式來改變Plesk 10中的'open_basedir'!

所以,相反,它是一個黑客的一點點,你必須首先去這裏:

/usr/local/psa/admin/conf/templates/default/service/php.php

然後改變這兩個文件中的行,(第11行和29)的: echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";

這樣: echo "php_admin_value open_basedir /var/www/vhosts/[your.domain]/httpdocs/:/tmp/\n";

或任何你想限制停止的地方。

然後確保你運行這些線是SSH:

在/ usr /本地/ PSA /管理/ sbin目錄/ httpdmng --reconfigure-所有

/etc/init.d/httpd停止

/etc/init.d/httpd開始

但現在我有一個新的問題。然而,當

/var/www/vhosts/[my.domain]/httpdocs/[folder]/html

沒有任何錯誤:「文檔根目錄」指向正確的文件夾服務器得到: require '../[folder]/[file.php]';

它跳過它就像它甚至沒有!不給我一個錯誤消息或任何東西。它也跳過我所有的嵌入式css文件,js文件,圖像,視頻......它不會進入任何目錄!我有一種感覺,這是一個'php.ini'設置或Plesk正在做的奇怪事情。

已解決:最後一個問題是因爲我從來沒有在根目錄下訪問文件。 PHP允許超出根目錄,但不能這樣做: src="../img/imagefile.jpg"

in HTML。

因此,重新構建我的網站文件後,我的網站現在正在運行!感謝所有幫助,希望有人不會再這樣做。另外,我看到一篇帖子,Plesk正在更新它,因爲這是一個大問題。有人爲Parallels工作說,http://forum.parallels.com/showthread.php?t=113236這將成爲下一個版本的一個選項,所以在這之前它是黑客時間!