2013-06-25 23 views
3

我剛開始使用Laravel,並在文檔中注意到它說他們建議您將應用程序文件移動到文檔根目錄之外,並且只能訪問/public的內容。好吧,好吧,我已經完成了。然而,在/public/index.php看來,它是硬編碼指向一個目錄到/bootstrap目錄。由於我已將框架代碼移至別處,因此我將該文件稍微修改爲:Laravel:支持更改框架/應用程序文件夾位置的方式?

$app_path = $_SERVER['DOCUMENT_ROOT'].'/../securefiles/myApp/'; 
... 
require $app_path.'/bootstrap/autoload.php'; 
... etc ... 

這是預期的做法嗎?這個文件需要在Laravel加載之前正確設置,所以我不認爲我可以配置Laravel自己來知道它相對於/public/index.php的存儲位置。我只是好奇,但如果有另一種更好,更合適的方法?

回答

5

不,這不是他們的意思。他們的意思是你需要指向虛擬主機使用public作爲DOCUMENT_ROOT,保持結構的其餘部分不變。所以,你會看到這樣的內容:

projectname/ 
    app/ 
    bootstrap/ 
    public/ 

然後是阿帕奇/ nginx的/ lighthttpd虛擬主機的配置將設置DOCUMENT_ROOT/path/to/projectname/public。所以除了服務器配置之外,不需要改變任何東西。這通常是如何完成的。 Apache示例:

<VirtualHost *:80> 
    DocumentRoot "/path/to/projectname/public" 
    ServerName yoursite.com 
    ServerAlias www.yoursite.com 
</VirtualHost> 
+1

標記爲正確,因爲它確實爲其他可能處於類似情況的人員回答了問題。不過,我有幾十個應用程序 - 每個都在自己的子目錄中,因此爲每個應用程序創建一個VH是不切實際的。由於我的情況沒有在文檔中明確描述或說明,我可以假設沒有真正的官方方式去做我想要的東西嗎? – Pickle

+0

@Pickle:我爲每個應用程序製作虛擬主機,它們是獨立的。如果他們運行的是完全相同的域,或者你有什麼需要,那麼他們應該是單個應用程序IMO中的模塊。如果你想共享相同的框架基礎,你可以使用include路徑或其他東西。此外,你所做的應該是技術上的工作,我認爲,它只是不常見的方式來設置它。 – prodigitalson

+0

hello @prodigitalson我們如何在共享主機上實現這一點,您無法訪問apache配置。由於我正在使用的應用程序將託管在共享主機上。什麼是隱藏代碼公共訪問的工作。我已經搜索了,但沒有找到任何適當的方法來做到這一點。 –

相關問題