2013-03-07 58 views
1

我在看下載和學習Symfony 2.我沒有真正看過PHP框架。爲什麼將Symfony 2安裝到web根目錄?

我知道這裏不允許討論,但我很確定我的問題不是主觀的,對我的問題有一個明顯的答案。

爲什麼Symfony 2下載到公共Web根目錄?

當然,它應該是非公開的,只有HTML/CSS等應該公開?

很明顯我錯了,但會明白這個原因。

這並不意味着有人可以去http://mysite.com/symfony/classes/database.php等(不是一個特定的網址,但只是爲了突出我的觀點)並運行各種腳本?顯然,這可能只是一個類文件,但它仍然不適合我。

此外,我想在同一個框架上運行5或6個不同的站點。如果它安裝在Web根目錄中,那麼這並不意味着我需要爲每個站點(在每個站點的Web根目錄中)安裝整個Symfony代碼庫 - 如果它位於Web根目錄之外,那麼每個站點都可以引用該例如'../../symfony/classes/database.php'等)(只要所有站點在同一臺服務器上)。

我一定要丟失一些非常清晰明顯的東西。

+0

如果您在Symfony之前沒有看過框架,爲什麼不試試Codeigniter或Zend框架? – 2013-03-07 23:25:45

+0

我不是專家,但我相信Zend非常複雜。儘管如此,我會很感激這個問題的建議。謝謝, – user2143356 2013-03-07 23:27:24

+0

Zend在版本1上非常複雜。你應該關注新版本2. Symfony比Zend 2複雜。 – 2013-03-07 23:30:10

回答

8

雖然很多框架都將他們所有的代碼放在web根目錄下,但Symfony卻沒有。

相反,標準分配有一個/ web文件夾,您應該使您的webroot。

如果您在服務器上無法將Webroot配置爲位於Symfony項目文件夾中,則可以改爲在webroot文件夾和Symfony Web文件夾之間使用symbolic link。這是共享託管計劃等常見做法。

+0

謝謝,我想我現在已經明白了。 – user2143356 2013-03-08 00:02:23

+0

你能說出爲什麼web文件夾應該是虛擬主機的文檔根目錄嗎? – mlwacosmos 2017-07-13 08:49:06

+0

@mlwacosmos最佳答案是安全原因 - 除非Apache配置錯誤,否則文檔根目錄之外的任何內容都無法直接訪問。 – MrGlass 2017-07-13 16:06:37

0

當你把你的框架數據放在服務器上時,它就是公開的。只有文件夾public通過虛擬主機指向VPS服務器,並視爲公共。 Symfony的公用文件夾web所以你應該這一點上虛擬主機加載的index.php

看這更多:Rename "web" folder in Symfony 1.4

示例如何設置Symfony2的一個文檔根:symfony2 installation instruction help please

第2版與1.4相似,因爲你只需要指向路徑。

+0

這是Symfony2的情況嗎? – halfer 2013-03-07 23:34:21

1

我沒有與Symfony的很多經驗,但我相信它有一個.htaccess文件的根目錄下,它可能有這樣一行:

RewriteRule ^$ web/app.php 

這意味着到根的所有請求目錄被重定向到/web/app.php文件。唉,除了那個文件,沒有人可以去任何地方。

正如其他人指出的,在生產環境中,您應該將您的webroot指向/ web目錄以獲取更嚴格的安全考慮。我上面的回答只是試圖指出它爲什麼會像現成的那樣起作用。

+0

爲什麼downvote?我明白我可能是錯的,但至少要解釋。 :) – Steve 2013-03-07 23:44:30

+0

向下投票請解釋,因爲這聽起來正確的給我。謝謝。 – user2143356 2013-03-07 23:46:28

+0

感謝您的幫助。 – user2143356 2013-03-08 00:02:47