Laravel5实践记录

最近开始参与开发后台,开始接触PHP里鼎鼎有名的Laravel框架,虽然之前一直会看各种后台相关的资料,但正式干活还是第一次,突然从前端app转到开发后台,是一个小挑战,在这记录一下一路下来的问题和心得。

laravel现在有几个版本,截至现在是5.1最新,处于新版本对php版本要求比较高,和公司其他系统一致,选择了5.0版本。开始就是搭建环境了,过程就不讲了,照着官网搞定,建议大家看英文的官网坑可能会少一点。工具选择了同事他们用的phpstorm,其实我比较like sublime,先用着这个吧,这种高度集成的ide也省事。

1. nginx配置失误导致的404错误

遇到第一个蛋疼的问题,在phpstorm里run和php artisan serve跑能都正常访问,部署到nginx,只能跑首页,访问http://localhost/home这个路径报404,找了半天才发现官网的文档最下面关于nginx的配置,要加一行代码,

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

其实是没加这个导致的伪静态问题,比如访问 /public/home 实际相当于 ../public/index.php/home,不信可以改为http://localhost/index.php/home试试

2. 执行php artisan migrate 报错

直接执行这个会报

[Illuminate\Database\QueryException]                                                                                                                                                                                                                               
  SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at' (SQL: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255) not null, `email` varchar(255) not null, `password` varchar  
  (60) not null, `remember_token` varchar(100) null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci)

原因就是mysql时间类型默认值不能设置为0,找到database/migrations目录,看到里面的.php文件,将$table->timestamp('created_at')改成$table->nullableTimestamps('created_at');再执行,搞定!

待续…

添加用户分组和权限相关的组件
Confide和
‘Zizaco\Confide\ServiceProvider’,

https://github.com/Zizaco/confide/tree/5.0
http://www.tuicool.com/articles/uIfAzue
http://blog.csdn.net/iefreer/article/details/37542395

必须装的ide工具
https://github.com/barryvdh/laravel-ide-helper

MySql模式问题
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-changes
http://blog.neten.de/posts/2014/01/27/install-mysql-using-homebrew/
http://blog.csdn.net/wyzxg/article/details/8787878

PHP从5.5升级到5.6的那些坑

参照这里http://avnpc.com/pages/install-lnmp-on-osx
基本可以完成,但一定要注意坑点:
在执行这个的时候记得去掉—with-debug,否则报各种不兼容
brew install php56 \
—without-snmp \
—without-apache \
—with-debug \
—with-fpm \
—with-intl \
—with-homebrew-curl \
—with-homebrew-libxslt \
—with-homebrew-openssl \
—with-imap \
—with-mysql \
—with-tidy