月度归档:2016年03月

PHPExcel在高版本PHP7中,Writer->save出现ERR_INVALID_RESPONSE错误的解决方法

这个Writer->save错误可能由于很多原因导致,其中有一部分是因为header和缓冲区的错误导致的

这部分具体讨论可以看这里http://stackoverflow.com/questions/8566196/phpexcel-to-download

 

然而还有一个不容易发现的问题,在高版本PHP7下,出现ERR_INVALID_RESPONSE的错误还可能由于下面的原因导致

Fatal error: 'break' not in the 'loop' or 'switch' context in <mypath>\PHPExcel\PHPExcel\Calculation\Functions.php on line 581

请打开PHPExcel\Calculation\Functions.php文件,删除掉581行的break即可

引用参考:https://github.com/PHPOffice/PHPExcel/issues/716

一步一步学Laravel,安装gulp使用Laravel Elixir编辑前端资源

1. 如果没有安装nodejs,先安装nodejs和npm

访问https://nodejs.org/en/download/,下载你需要的包进行安装

Linux用户可以使用下面命令,/usr/local/node-4.4.0是我想安装的位置,可以换成你自己的

wget https://nodejs.org/dist/v4.4.0/node-v4.4.0-linux-x64.tar.xz
xz -d node-v4.4.0-linux-x64.tar.xz
tar -xvf node-v4.4.0-linux-x64.tar
mv node-v4.4.0-linux-x64 /usr/local/node-4.4.0

修改/etc/profile,为node配置环境变量

PATH=$PATH:/usr/local/node-4.4.0/bin
export PATH

然后执行下面命令使得更改生效

source /etc/profile

然后我们执行下面命令,显示版本号就代表nodejs安装成功

node -v

2. 回到我们的项目目录,进行使用Laravel Elixir的准备工作

安装全局gulp

npm install --global gulp

然后我们需要在项目目录再安装一次gulp,不执行这步会提示Local gulp not found

npm install gulp

然后安装Laravel Elixir

npm install

最后,Elixir 基于 Gulp,所以要运行 Elixir 命令你只需要在Shell中运行 gulp 命令即可。添加 –production 标识到命令将会最小化 CSS 和 JavaScript 文件

// Run all tasks...
gulp

// Run all tasks and minify all CSS and JavaScript...
gulp --production

3. 使用gulpfile.js

打开Laravel根目录的gulpfile.js文件,我们可以通过这个文件来为gulp配置任务

elixir(function(mix) {
    var output = 'public/assets/css';
    mix.less('bootstrap.less',output);
    mix.less('colors.less',output);
    mix.less('components.less',output);
    mix.less('core.less',output);
});

比如,上面的代码表示我们要把/resources/assets/less(LESS的默认目录)下面的bootstrap.less等这几个文件(如下图)使用less编译输出到public/assets/css目录

QQ截图20160316002851

然后我们在Shell里运行gulp即可开始任务,并能看到成功或错误的提示

gulp

QQ截图20160316003141

更多请参考 http://laravelacademy.org/post/3137.html

一步一步学Laravel,使用rlwrap让PHP Shell支持方向键历史记录

在默认情况下,我们的PHP Shell中使用方向键会被输入乱码比如^[[C^[[B^[[A^H^[:^C ,而且上下也不能支持历史记录,如图

QQ截图20160314005721

首先,我们下载rlwrap

wget http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-0.42.tar.gz

然后解压,配置和编译

tar zxvf rlwrap-0.42.tar.gz
cd rlwrap-0.42
./configure
make && make install

现在我们就可以使用如下命令来用rlwrap运行PHP Shell了

rlwrap php artisan tinker

如果觉得每次都要开头都要加rlwrap麻烦,可以执行下面的操作

vi ~/.bash_profile

我们在.bash_profile文件的末尾加上,注意下面的语句不要加空格什么的,请保持原样

alias php='rlwrap php'

然后执行

source ~/.bash_profile

现在只需要直接运行php artisan 也可以支持了

一步一步学Laravel,安装并使用laravel-menu

原项目地址:https://github.com/lavary/laravel-menu

1. 首先在 composer.json的require项目中添加

"lavary/laravel-menu": "dev-master"

2. 然后在Shell中执行

composer update

3. 找到config/app.php,在providers中添加

Lavary\Menu\ServiceProvider::class,

在aliases添加

'Menu' => Lavary\Menu\Facade::class,

5. 如果你还没有安装laravel-ide-helper,请按照https://onlyke.com/html/450.html,安装laravel-ide-helper
已经安装laravel-ide-helper的,在Shell中执行如下命令

php artisan ide-helper:generate

6. 这样就可以使用了,我们可以创建一个中间件,在Shell中执行下面命令

php artisan make:middleware Sidebar

下面是Siderbar.php的简单例子,注意use Menu;

<?php

namespace App\Http\Middleware;

use Closure;
use Menu;

class Sidebar
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        Menu::make('Sidebar',function($menu){
            $menu->add('Home');
        });
        return $next($request);
    }
}

当然了,官方github有更详细的例子和说明

一步一步学Laravel,5.2版本遇到Session store not set on request

最近重新开始看Laravel,发现登录和注册页面只要模板里使用old函数页面就会出错:Session store not set on request

遇到这个问题是因为所有需要session,csrf等控制器必须要放在web中间件下面,所以我们可以创建一个路由分组

Route::group(['middleware' => 'web'], function (){
    Route::get('/', function () {
        return view('welcome');
    });

    Route::auth();
});

解决方案来自:https://laracasts.com/discuss/channels/laravel/l5-session-store-not-set-on-request

linux下彻底卸载mysql

停止Mysql服务

service mysqld stop

查询已安装的mysql包并删除

rpm -qa|grep -i mysql

QQ截图20160310151708

然后复制上面的包名,分别执行

rpm -e --nodeps 包名

查找并删除mysql相关目录

find / -name mysql

20160310152135

把上面的目录(注意分辨一下用途),分别执行

rm -rf 目录

最后删除my.cnf

 rm -rf /etc/my.cnf

 

google-font字体缓存,将谷歌字体保存在本地,方便网页使用,避免被墙

自己写的小程序,可以将fonts.googleapis.com的字体缓存在本地,不需要使用CDN,也不用担心被墙了

尤其是国内的CDN,fonts.useso.com这个网站不支持https,比如我的博客就把字体缓存了

QQ截图20160309233138

使用方法:

  1. 把google-fonts的字体放在CSS Url里面,比如:https://fonts.googleapis.com/css?family=Roboto|Open+Sans:400italic|Lato:300italic
  2. 然后点击Select A Folder选择保存的目录
  3. 在保存目录找到缓存好的字体和css文件,在HTML中引用即可,css文件内容如图
    QQ截图20160309233904

网盘链接: http://pan.baidu.com/s/1o7wI0K6 密码: csk5