学习 Laravel 那些坑 (一)之安装

第一个坑是因为环境的问题。
当然,如果安装好套件或是纯原码编译可能问题会少一些,则这些坑便跳过了。
这里使用的是 vagrant,虽然可能坑多点,但是用起来还是很方便的,轻便,不『污染』主系统,随便折腾,PHP 环境的话,偷下懒,lnmp 一键安装。

第一坑:open_basedir

这个问题已经解决了,方法在这里

第二坑:url 重写

安装完成之后,第一件可能做的事情就是使用一下 N逼闪闪的 artisan
先加个 auth 试试吧。

生成 author 的命令:

php artisan make:auth

生成很容易,一条命令,但问题是访问时却看不到登录验证页面??404?
看了下官方文档,原来是重写的锅,修改一下 nginx的配置文件(官档这里):

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

好,欣赏一下一条命令生成的 auth吧:

这里写图片描述

第三坑:配置信息

在前面的版本中,配置信息是写在 config 里面的,但后续的版本放在了.env 文件中。

如果提示:

No application encryption key has been specified.

这样的信息,那可能是.env 配置信息中 [APP_KEY] 这一项为空。
解决办法是像这样生成 key:

[root@www blog]# php artisan key:generate
Application key [base64:wghjh3rpIfOjQ+5T7+6nXFaJGsuewA0qS0HowkBt6N4=] set successfully.

然后再把[]号中的值复制到.env 环境文件中,如果这个文件不存在,则创建它(比较全的 .env 文件在这里)。

第四坑:laravel 安装完成后页面不显示,无内容,服务器500

这个坑的原因是没有办法写出页面缓存导致的,因为下面第五坑的原因,页面无显示,也找不到原因,只是看服务器报500,页面没有任务内容。

解决办法:

把项目根目录下的storage目录权限修改为可写。

第五坑:开启 debug模式

因为安装时并未设置 .env,所以安装后页面出错也并未显示错误信息,导致找不到错误所在,修改 config 目录下的 app.php 中的

 'debug' => env('APP_DEBUG', false),

 'debug' => env('APP_DEBUG', true),

最好是这样做,添加 .env 文件,在其中添加 app_debug 项:

APP_DEBUG=true

第六坑:php artisan make:auth 执行之后 login404

这个坑真的有点坑,看到有人说Laravel 利用了 PHP5.4 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,只要使用:

php artisan make:auth

激活就可以使用了。

但有可能你在激活后访问 类似:http://www.domain.com/login 这样的域名时,发现其实是404,找遍代码问题也无果,其实真正原因在于 Web 服务器配置,因为 laravel 默认提供隐藏了 index.php 的优雅链接(这是官方说法),所以就需要 web 服务器开启重写模块喽。
apache解决办法,启用 mod_rewrite模块,让服务器能够支持 .htaccess 文件的解析,然后修改 .htaccess 文件:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Nginx服务器则是修改站点配置,加入以下内容,它将会将所有请求都引导到 index.php 前端控制器:

location / {
try_files u r i uri/ /index.php?$query_string;
}

第七坑:其实与 laravel 无关,此问题只在 windows 环境下出现:

laravel安装时openssl_encrypt() 的问题 :Call to undefined function openssl_decrypt()

  • 方案1:
    打开 php.ini ,把
;php_openssl.dll 

;extension=php_mcrypt.dll 

前面的分号【;】去掉,重启 apache,

  • 方案2:
    如果不能解决,从php安装根目录中拷贝 libeay32.dll 和 ssleay32.dll 覆盖掉apache/bin 下的对应文件(注意需要将httpd关闭)最后重启apache即可;
  • 方案3:如果以上方法还是解决不了,看下apache 2.4的httpd.conf,里面面的
LoadModule php5_module D:/php-5.6.25/php5apache2_4.dll 

PHPIniDir "D:/php-5.6.25”

是不是对应的版本,且都在5.6以上

ps:如果以上步骤还不能解决问题,把 PHP 版本更换一下。

猜你喜欢

转载自blog.csdn.net/yageeart/article/details/78797829