Laravel 5.3后台管理系统Laravel-admin搭建步骤

网上的很多基于 Laravel 的后台管理系统,要么缺少基本的功能,要么太臃肿,总是找不到自己喜欢的,于是自己做了一个。它的特点是尽可能简单又不缺少基本的后台功能,如用户认证,基于角色的权限系统(Entrust),菜单管理,媒体管理等,并且使用 AdminLte 后台界面,外观简洁功能强大。

继续阅读“Laravel 5.3后台管理系统Laravel-admin搭建步骤”

Laravel 使用 env 读取环境变量为 null 的问题

不知道大家有没有遇到过,在 Laravel 中(除 app/config 目录下的配置文件中)使用 env 函数读取环境变量,有时有用,有时返回 null,究竟怎么回事?让我们一探究竟。

在 Laravel 项目中,如果执行了 php artisan config:cache 命令把配置文件缓存起来后,在 Tinker 中(Tinker 是 Laravel 自带的一个交互式命令行界面),使用 env 函数读取环境变量的值为 null,只有执行 php artisan config:clear 清除配置缓存后就可以读取了,这是为什么呢?

继续阅读“Laravel 使用 env 读取环境变量为 null 的问题”

PHP 数组同值稳定排序

在 PHP 中对数组排序有很多函数,如 sort, asort, arsort, ksort, krsort, uasort 等等,但是有一个问题,如一个数组:

用 asort 函数对其进行排序,asort($test) 结果如下(转换为 json 格式):

可以看到排序虽然正确,值为 1 的元素排到后面去了,但是值为 0 的元素顺序跟以前不一样了,如何保证 PHP 数组同值元素排序后顺序保持不变呢?

继续阅读“PHP 数组同值稳定排序”

PHP 写文件加锁

用 PHP 的 file_put_contents 函数以追加的方式,循环 10 w 次写文件,耗时很多。因为 file_put_contents 函数每次都要打开文件,写入文件,然后关闭文件。

以下是测试:

继续阅读“PHP 写文件加锁”

Laravel Session 保存机制和 terminate 中间件

在 Laravel 中可以使用 Session 的 get, put, pull, set, has, flash 等方法进行操作,如:Session::put([‘domain’=>’tanteng.me’, ‘host’=>’aliyun’]),就可以设置两个 session 值,看看 put 方法:

继续阅读“Laravel Session 保存机制和 terminate 中间件”

SSO 单点登录系统接入

简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了。

SSO 登录请求接口往往是接口加上一个回调地址,访问这个地址会跳转到回调地址并带上一个 ticket 参数,拿着这个 ticket 参数再请求接口可以获取到用户信息,如果存在用户则自动登录,不存在就新增用户并登录。

继续阅读“SSO 单点登录系统接入”

Laravel 报错: Declaration of XXX

在另一台机器上拉取最新代码后,进入网站后台,发现页面空白,使用 php artisan cache:clear, php artisan clear-compiled 等清除缓存和编译文件后还是不行,打开 PHP 错误日志查看,发现报错:

Fatal error: Declaration of Illuminate\\Auth\\SessionGuard::basic() must be compatible with that of Illuminate\\Contracts\\Auth\\SupportsBasicAuth::basic() in /usr/share/nginx/html/tanteng.me/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 17

继续阅读“Laravel 报错: Declaration of XXX”

《性感的 PHP — 现代化 PHP 开发》PPT分享

说好的把这次技术分享的 PPT 发出来的,一直没时间弄,现在整理了一下,并导出了一份 PDF 版的 PPT,给大家参考。(PS:本次技术分享仅仅是介绍一些关于现代化 PHP 开发的技术,并不是讲某个方面的高深技术和经验,即便如此,针对目前的 PHP 现状,很多项目,公司和开发者,还在使用过时的 PHP 技术,这个分享还是有价值的)。

本次技术分享主要讲了一些现代化 PHP 开发的技术,PPT 重点介绍了命名空间,闭包,匿名函数,Traits 这些新特性,以及介绍了 Composer 依赖包管理器和 PSR 规范。

继续阅读“《性感的 PHP — 现代化 PHP 开发》PPT分享”

PHP 二进制安全

补充一下 PHP 的基础知识,什么是二进制安全?

这得从 C 语言说起。

C字符串中的字符必须符合某种编码( 比如 ASCII), 并且除了字符串的末尾之外, 字符串里面不能包含空字符, 否则最先被程序读入的空字符将被误认为是字符串结尾, 这些限制使得 C 字符串只能保存文本数据, 而不能保存像图片、 音频、 视频、 压缩文件这样的二进制数据。

以上这段文字摘自《Redis设计与实现》。

继续阅读“PHP 二进制安全”

友盟 IOS 推送官方 PHP SDK 自定义播示例有误

最近用到友盟给 IOS 应用推送消息,友盟的推送分为单播,列播,广播,组播,文件播,和自定义播,在使用自定义播官方 PHP SDK 发现官方示例(PHP SDK v1.4)有误。

主要问题,一个是请求 url 需要加 sign 签名,一个是解析数组 json_decode 函数使用问题,还有一个废弃的校验参数。

继续阅读“友盟 IOS 推送官方 PHP SDK 自定义播示例有误”