2016-12-27 21 views
0

由於這是一個與完成的整個項目有關的問題,我不認爲我將能夠發佈整個代碼。如果需要任何附加信息,請詢問我將對其進行編輯。爲什麼這個PHP框架顯示目錄索引而不是網頁?

我有一個網站是爲我的一個類使用這個PHP框架開發的:https://github.com/panique/mini。該網站適用於我從HostGator租用的服務器(它爲我提供了LAMP堆棧),現在我正嘗試將該網站移至AWS EC2實例。

我已經使用Amazon提供的文檔和教程設置了AWS EC2,並且能夠在安裝LAMP堆棧之後成功託管我的實例中的網頁。我使用的PHP框架需要PHP 5.3+,這是我的EC2實例。我也正確設置了MySql,並且能夠使用MySql Workbench訪問我的數據庫。

我已將項目文件上載到網頁所在的公共目錄,即var/www/html/。並使用我的MySql信息正確配置了config.php文件(與我用於MySql Workbench的登錄憑據完全相同)。

所以現在到了我遇到的問題。每當我瀏覽到mydomain.com/Project(假設該項目位於var/www/html/Project),我就會得到目錄索引,而不是我開發的Web應用程序。從我在Github自述文件中讀到的內容來看,PHP框架應該在config/config.php中配置MySql數據庫信息後工作。我知道這是正確配置的,因爲我可以調用數據庫表。

有沒有人有這個PHP框架的經驗?這是我第一次在Amazon Linux中實際設置LAMP堆棧。我想知道是否有任何配置設置與我應該配置的Apache有關?

+0

你有'index.php'嗎?因爲當你沒有'index.php'時會發生這種情況。 –

+0

@FranzGleichmann是的,'index.php'位於我使用的PHP框架內的'public'文件夾中。 – Ferrazeth

+0

是啊...你必須在* main *文件夾中有一個。您目前獲取目錄索引的地方。 –

回答

2

今天新的框架分開/public目錄的請求可訪問。

你必須選項

1.指向你的Apache到/public 編輯FIE /etc/httpd/conf/httpd.conf(依賴於分佈)。 和更改

DocumentRoot "/var/www/html" 

DocumentRoot "/var/www/html/myframework/public" 

你也可以用虛擬主機或別名做到這一點。

2.在框架的根目錄下使用.htaccess + mod_rewrite。

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^public 
RewriteRule ^(.*)$ public/$1 [L,QSA] 

3的index.php文件添加到您的框架的根目錄。

<?php 
header('Location: public/'); 

// This option is not really fix the problem. it's just redirect user to `/public`. you will always have `/public` in your urls. 

// It's only work for home page. 
// You can use only relative path to your assets. 
+0

有趣的是,這解決了目錄索引問題,但是現在我遇到了實際'public'文件夾中沒有任何文件正在被正確訪問的問題。例如'mydomain.com/Project/js /'不存在。正確的URL應該是'mydomain.com/Project/public/js'。由於這個格式不正確的URL,'public'文件夾中的所有文件都返回一個'404'。有沒有辦法解決這個問題? – Ferrazeth

+0

你選擇了哪個選項? – Hereblur

+0

我選擇了第三個選項,並加載了頁面。除了在'public'文件夾中加載資源之外,一切看起來都很好。 – Ferrazeth

相關問題