Laravel 5/Apache 2.4.9配置问题


Laravel 5 / Apache 2.4.9 Configuration problems

我正在尝试在一台CentOS全新服务器上安装和配置Laravel 5。

但我恐怕没有足够的知识来理解和解决我的环境问题。所以我会尽量准确地描述我的实际设置和问题。

让我们从Apache 2.4.9 开始

httpd.conf中的所有内容几乎都是默认的。我刚刚编辑了文档根路径,直接指向未来的laravel公用文件夹:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache/htdocs/public"
<Directory "/usr/local/apache/htdocs/public">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options -Indexes -FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted

在您询问之前,是的,mod_rewrite模块已启用。

然后我的PHP也有基本的配置,它的版本是5.6.5。

然后我安装了composer,并用它创建了一个新的laravel项目

composer create-project laravel/laravel {directory} "~5.0.0" --prefer-dist

一切顺利运行,没有任何问题。

但现在我试图通过输入我的服务器IP地址来访问我新安装的laravel应用程序,但它只显示一个空白页面,如果我检查控制台,它会给我500个错误。

以下是我试图解决问题的方法:

  1. 我在laravel博客上发现了一篇帖子,说我们应该像我做的那样授予/storage文件夹的全部权限,现在我不再有白色页面了,但我出现了:"哇,出了问题"错误。

  2. 我尝试了官方laravel文档上建议的备用.htaccess配置文件-没有任何变化

  3. 我不知道我为什么这么做,但我运行了php artisan serve命令,现在我看到了Laravel欢迎页面。。。即使我退出发球模式,它仍然运行?!?我不确定我是否理解为什么,但即使我理解了,它实际上也不完全起作用。。。我只收到欢迎页面,但如果我尝试http://my-ip-address/home它显示了一个404未找到。

我觉得我到处都找遍了,但我找不到答案,我已经接近抑郁症了。这里有人知道我的问题吗?

感谢所有能帮我的人!

@更新

对不起,我忘记了服务器日志:

    [2015-12-17 04:22:03] production.ERROR: exception 'ReflectionException' with message 'Class encrypter does not exist' in /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php:776
Stack trace:
#0 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(776): ReflectionClass->__construct('encrypter')
#1 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(656): Illuminate'Container'Container->build('encrypter', Array)
#2 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(613): Illuminate'Container'Container->make('encrypter', Array)
#3 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(887): Illuminate'Foundation'Application->make('Illuminate''Cont...')
#4 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(848): Illuminate'Container'Container->resolveClass(Object(ReflectionParameter))
#5 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(813): Illuminate'Container'Container->getDependencies(Array, Array)
#6 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php(656): Illuminate'Container'Container->build('Illuminate''Cook...', Array)
#7 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(613): Illuminate'Container'Container->make('Illuminate''Cook...', Array)
#8 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(127): Illuminate'Foundation'Application->make('Illuminate''Cook...')
#9 /usr/local/apache/htdocs/public/index.php(57): Illuminate'Foundation'Http'Kernel->terminate(Object(Illuminate'Http'Request), Object(Symfony'Component'HttpFoundation'Response))
#10 {main}
[2015-12-17 04:22:03] production.ERROR: exception 'ErrorException' with message 'file_put_contents(/usr/local/apache/htdocs/vendor/services.json): failed to open stream: Permission denied' in /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Filesystem/Fi$
Stack trace:
#0 [internal function]: Illuminate'Foundation'Bootstrap'HandleExceptions->handleError(2, 'file_put_conten...', '/usr/local/apac...', 74, Array)
#1 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(74): file_put_contents('/usr/local/apac...', '{'n    "provider...', 0)
#2 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(193): Illuminate'Filesystem'Filesystem->put('/usr/local/apac...', '{'n    "provider...')
#3 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(139): Illuminate'Foundation'ProviderRepository->writeManifest(Array)
#4 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(59): Illuminate'Foundation'ProviderRepository->compileManifest(Array)
#5 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(439): Illuminate'Foundation'ProviderRepository->load(Array)
#6 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(15): Illuminate'Foundation'Application->registerConfiguredProviders()
#7 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(167): Illuminate'Foundation'Bootstrap'RegisterProviders->bootstrap(Object(Illuminate'Foundation'Application))
#8 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(195): Illuminate'Foundation'Application->bootstrapWith(Array)
#9 /usr/local/apache/htdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(106): Illuminate'Foundation'Http'Kernel->bootstrap()

这是我犯的两个错误。

很抱歉我无法添加评论。

我认为您可能缺少php-mcrypt扩展。

首先使用以下命令为laravel 5.1应用程序生成密钥。例如。$php-artisan密钥:生成成功设置应用程序密钥[Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3]

现在复制此密钥并将其粘贴到您的项目/config/app.php 中

'key' => 'Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3',

试试这个:

sudo chmod 775 /usr/local/apache/htdocs/vendor/services.json

对不起,我周末没有回复,我有点忙。

每个人的回答都有点对。这是明确的目录权限问题。我还没有找到完美的许可级别,因为我不是专家。但我可以告诉你,如果我chmod-R 777/存储/供应商和/公共,它是有效的。

我知道chmod 777可能不安全,但我真的不是权限方面的专家。。

但无论如何,我会把这个答案标记为已解决,因为我确实在某种程度上解决了我的问题:)

但是,如果有人有更好的答案或想给出更详细的解释,我会更新这篇文章或将最佳答案标记为已解决。