【问题标题】:apache directory listing instead of executing websiteapache目录列表而不是执行网站
【发布时间】:2017-10-27 06:04:40
【问题描述】:

我使用以下命令在我的 Ubuntu 16.04 上安装了 Lamp 服务器:

sudo apt-get install tasksel
sudo tasksel install lamp-server

然后通过基本的apt-get 命令添加PHPMyAdmin。

我的directory root/var/www/html

我在 http://localhost/info.phphttp://localhost/info/info.php 中创建了包含 <?php phpinfo(); ?> 的简单 PHP 文件,以查看 PHP 是否可以正常工作。

现在,当我尝试打开位于 http://localhost/test/http://localhost/fri/ 的 Laravel 或 Nette 网站时,我得到的是目录列表而不是网站执行。

我认为这是由 .htaccess 文件引起的,因为 Nette 项目有它,但 Laravel 项目没有它并且行为相同。

apache2.conf 包含以下内容:

<Directory /var/www/html/>
    Options +FollowSymLinks    
    AllowOverride All
    Require all granted
</Directory>

【问题讨论】:

  • localhost/test 可以正常工作并加载 index.php。
  • AFAIK 你不必将 Laravel 项目保存在 /var/www/html 目录中。只需在命令行中运行php artisan serve 命令,它就会运行 localhost:8000。有关更多信息,请参阅this gist。
  • 我知道 Laravel php artisan,它工作正常,但我希望能够以“经典”方式运行任何其他网站。

标签: php apache .htaccess ubuntu


【解决方案1】:

sudo vim /etc/apache2/sites-available/mysite.conf

<Directory /var/www/html/zhyfin/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    Require all granted
</Directory>

sudo service apache2 reload

【讨论】:

    【解决方案2】:

    您似乎没有将 PHP 作为模块启用。

    检查 Apache 目录(默认:/etc/apache2/)中的文件夹 mods-enabled 以查看是否找到名为 php 的文件。

    你可以tail -f in:var/log/apache2/error.log看看你有没有错误。

    如果没有,你可以添加到apache2.conf这个:

    DirectoryIndex index.php index.html index.pl index.cgi
    

    如果这些都不起作用,请在您的 apache 配置文件中找到DirectoryIndex(可能在httpd.conf 中),并检查index.php 是否存在(它应该存在)。

    希望对你有帮助!

    【讨论】:

    • PHP 模块已启用。 mods-enabled 文件夹包含 php7.0.conf 和 php7.0.load 文件。也没有error.log文件。
    • 如上你需要确保在apache2.conf中index.php在index.html之前,默认情况下.html在前。同样在这两个目录列表中,我都看不到 index.php 文件,这可能就是您获取目录列表的原因。尝试转到“www”或“public”,看看它是否加载。
    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多