为什么这个PHP框架显示目录索引而不是网页?

问题描述:

由于这是一个与完成的整个项目有关的问题,我不认为我将能够发布整个代码。如果需要任何附加信息,请询问我将对其进行编辑。为什么这个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 *文件夹中有一个。您目前获取目录索引的地方。 –

今天新的框架分开/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