Laravel 5刀片无法在CentOS 7上工作


Laravel 5 Blade Not Working on CentOS 7

我尝试在Centos7上安装一个新的laravel项目Apache/PHP 5.6/MariaDB.

关于/var/www:

composer create-project laravel/laravel devil
chmod -R 777 devil/storage
chmod -R 777 devil/vendor

当我试图从浏览器访问它时,它似乎是刀片扩展不起作用。它一直显示空白页,没有任何错误。

我检查了chrome web开发人员扩展上显示500(内部服务器错误)的HTTP响应。

只有当我根本不使用blade模板(不使用.blade.php扩展和blade语法)时,该应用程序才能工作。

以下是文件夹结构

drwxr-xr-x. 10 adzar adzar   4096 Mar 25 04:06 app
-rwxr-xr-x.  1 adzar adzar   1635 Mar 25 04:06 artisan
drwxr-xr-x.  2 adzar adzar     39 Mar 25 04:06 bootstrap
-rw-r--r--.  1 adzar adzar    788 Mar 25 04:06 composer.json
-rw-r--r--.  1 adzar adzar 100509 Mar 25 04:06 composer.lock
drwxr-xr-x.  2 adzar adzar   4096 Mar 25 04:06 config
drwxr-xr-x.  4 adzar adzar     52 Mar 25 04:06 database
-rw-r--r--.  1 adzar adzar    503 Mar 25 04:06 gulpfile.js
-rw-r--r--.  1 adzar adzar     98 Mar 25 04:06 package.json
-rw-r--r--.  1 adzar adzar     87 Mar 25 04:06 phpspec.yml
-rw-r--r--.  1 adzar adzar    777 Mar 25 04:06 phpunit.xml
drwxr-xr-x.  4 adzar adzar     95 Mar 25 04:06 public
-rw-r--r--.  1 adzar adzar   1724 Mar 25 04:06 readme.md
drwxr-xr-x.  5 adzar adzar     42 Mar 25 04:06 resources
-rw-r--r--.  1 adzar adzar    560 Mar 25 04:06 server.php
drwxrwxrwx.  5 adzar adzar     60 Mar 25 04:06 storage
drwxr-xr-x.  2 adzar adzar     47 Mar 25 04:06 tests
drwxrwxrwx. 26 adzar adzar   4096 Apr  8 18:31 vendor

.env file(不变)

APP_ENV=local
APP_DEBUG=false
APP_KEY=EOvUHTpMtavKDMx1GdkREtbves8PVEUb
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io

我使用IP地址(100.255.XXX.XXX)使用apache虚拟主机访问我的应用程序。下面是我的/etc/httpd/conf/httpd.conf

...
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName 100.255.XXX.XXX
...
<VirtualHost *:80>
        ServerName 100.255.XXX.XXX
        DocumentRoot /var/www/devil/public
        <Directory /var/www/devil>
            AllowOverride All
        </Directory>
</VirtualHost>

请帮忙,谢谢。

更新

经过几个小时的尝试,我终于能够通过禁用SELinux来解决这个问题。

setenforce 0

然而,我仍然不知道为什么。

Blade模板在文件系统中广泛缓存其模板。

因此,您需要确保适当的文件夹可由web服务器写入。

Laravel可能需要配置一些权限:storagevendor中的文件夹需要web服务器的写访问权限。

通过在控制台中运行以下命令修复您的文件夹权限:

chmod 664 /var/www/devil/storage -R

chmod 664 /var/www/devil/vendor -R

来源:http://laravel.com/docs/5.0/installation#configuration