使用 PHPStorm + Xdebug 实现断点调试

一、配置 Xdebug

配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考《PHP 安装 Xdebug扩展》:

[xdebug]
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM

重启 Apache,查看配置是否生效。

二、配置 PHPStorm

1. 配置 Servers,主要配置项如下图:
Mac 路径为:PHPStorm->Preferences->Languages & Frameworks->PHP->Servers
Win 路径为:File->Settings->Languages & Frameworks->PHP->Servers

phpstorm-servers.png

2. 配置 Debug,确保 Debug port 和上面的对应,其它选项默认即可:
Mac 路径为:PHPStorm->Preferences->Languages & Frameworks->PHP->Debug
Win 路径为:File->Settings->Languages & Frameworks->PHP->Debug

phpstorm-debug.png

三、配置 XDebug helper

1. 在Chrome中搜索并安装 XDebug helper 扩展。

2. 安装成功后,在 Chrome 扩展程序列表中找到 XDebug helper,点击选项,将 IDE key 选项选为 PhpStorm

四、使用 PHPStorm + Xdebug 实现断点调试

1. 在 PHPStorm 中开启 Debug 监听,点击右上角像电话一样的图标,图标变绿表示成功;

2. 在 Chrome 中开启 XDebug helper 插件:
chrome-debug.png

3. 在 PHPStorm 中设置断点,在需要断点调试的代码行前面单击即可;

4. 在浏览器中访问进行断点调试,成功后我们将可以看到如下调试信息:
phpstorm-xdebug-result.png


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

PHP 安装 Xdebug 扩展

一、前言

1. Xdebug 简介

Xdebug 是一个开放源代码的 PHP 程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。当前最新版本为 Xdebug 2.5.0。

2. Xdebug 相关资料

官网:https://xdebug.org
官网文档:https://xdebug.org/docs

3. 选择合适的版本

如果不知道该下载哪个版本,官方提供了一个检测工具,只需要打印 phpinfo() 的信息,并全部复制到该工具的文本框内,并点击下面的“Analyse my phpinfo() output”按钮即可,官方将会提供详细的下载和安装介绍。工具传送门

如果官方的文档看不懂,可以继续往下看。

二、安装 Xdebug 扩展

以下为本人的安装步骤。

1. Linux、macOS 下安装

#下载、解压、安装、编译:

$ curl -O https://xdebug.org/files/xdebug-2.5.0.tgz
$ tar -zxf xdebug-2.5.0.tgz
$ cd xdebug-2.5.0
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config
$ make
$ make install
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20131226/

编译成功后会提示一个路径,表示已经将扩展放置在该位置。

#. 修改 PHP 的配置文件php.ini,加载 Xdebug 模块:

zend_extension=xdebug.so

#. 重启apache,检测是否安装成功:

$ sudo apachectl restart
$ php -m | grep xdebug

如果出现 xdebug 则表示安装成功。

2. Windows 下安装

Windows 下安装 Xdebug 扩展,只需下载对应的 xdebug.dll 扩展即可。
下载地址:https://xdebug.org/download.php

#. 首先查看本地的 php 信息:
phpinfo.png

#. 然后选择对应的 xdebug 版本进行下载:
xdebug-version-info.png

#. 将下载后的 .dll 文件放到 PHP 的 ext 目录,并修改 php.ini 配置文件,添加如下内容:

zend_extension=php_xdebug-2.5.0-5.5-vc11.dll

#. 重启apache,检测是否安装成功:
phpinfo-xdebug.png

如果出现该信息,则说明安装成功;如果 apache 重启失败,说明下载的扩展和 PHP 版本不匹配,请认真检查后重新下载。


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Laravel 中使用 Redis 数据库

一、前言

Redis 是一个开源高效的键值对存储系统,它通常用作为一个数据结构服务器来存储键值对,它可以支持字符串、散列、列表、集合、有序集合。

1. 安装 predis/predis

在 Laravel 中使用 Redis 之前,你需要通过 Composer 来安装 predis/predis 包(~1.0):

$ composer require predis/predis

2. 配置

Redis 的配置文件在 config/database.php。在该文件中,我们可以看到一个包含 Redis 服务信息的配置数组,如下:

'redis' => [

    'cluster' => false,

    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],

然后在 .env 文件中配置如下三项为自己的信息:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

对于开发来说,默认的配置已经完全可以满足大部分的应用了。但是,你可以自由的在你环境中修改这个配置。你可以简单的添加 Redis 服务的名称,并且指定相应的服务器地址和端口。

cluster 选项会告诉 Laravel Redis 客户端在你的 Redis 集群中进行客户端的分片,这样就可以构成节点池并且创建大量有效的 RAM。但是,你需要注意的是客户端分片并不能处理故障转移。因此,它主要用来从一个主要数据存储地址获取可用的缓存数据。

另外,你可以在你的 Redis 连接定义里添加一个 options 数组,这样你可以指定 Predis 的客户端选项。

如果你的 Redis 服务器引入了认证机制,那么你需要在你的 Redis 服务配置数组中添加一个 password 配置项来提供凭证。

二、与 Redis 进行交互

在 Laravel 中,我们可以通过使用 Redis 假面 的各种方法来与 Redis 进行交互。Redis 假面支持动态方法,这意味着我们可以在 Redis 假面上调用任何的 Redis 命令,假面会直接将命令传递给 Redis。

1. 基本使用

下面演示 Redis 的 string 类型使用:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Redis;

class RedisController extends Controller
{
    public function set()
    {
        Redis::set('name', 'sean');
    }

    public function get()
    {
        $name = Redis::get('name');
        var_dump($name);
    }
}

2. 使用多个 Redis 连接

可以通过使用 Redis::connection 方法来获取 Redis 的实例:

$redis = Redis::connection();

这会返回默认的 Redis 服务器的实例。如果你没有使用集群服务,你可以传递配置文件中所定义的服务名称到 connection 方法中:

$redis = Redis::connection('other');

3. 管道命令

管道流水线可以允许你在一个操作中对 Redis 服务器执行多个命令。pipeline 方法接收一个参数: Closure ,它会接收 Redis 的实例。你可以在闭包中发布所有的命令,它们将会在一个操作中进行处理:

Redis::pipeline(function ($pipe) {
    for ($i = 0; $i < 1000; $i++) {
        $pipe->set("key:$i", $i);
    }
});

其它的使用,大家如果有兴趣可以自己进行继续摸索!


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

PHP 安装 phpredis 扩展

本文主要介绍为 PHP 安装 phpredis 扩展,并用 PHP 代码连接 Redis 服务器。

一、安装 phpredis 扩展

1. Linux、macOS 下安装

#. 下载、解压、安装、编译:

$ curl -O https://nodeload.github.com/nicolasff/phpredis/zip/master
$ tar -zxf master
$ cd phpredis-master/
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config 
$ make 
$ sudo make install
Password:
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20131226/

编译成功后会提示一个路径,表示已经将扩展放置在该位置。

#. 修改 PHP 的配置文件php.ini,加载 redis 模块:

extension=redis.so

#. 重启apache,检测是否安装成功:

$ sudo apachectl restart
$ php -m | grep redis

如果出现 redis 则表示安装成功。

2. Windows 下安装

Windows 下安装 phpredis 扩展,只需下载对应的 php_redis.dll 扩展即可。
下载地址:http://windows.php.net/downloads/pecl/snaps/redis/

#. 首先查看本地的 php 信息:
phpinfo.png

#. 然后选择对应的 phpredis 版本进行下载:
phpredis-info.png

#. 将下载解压后的 .dll 文件放到 PHP 的 ext 目录,并修改 php.ini 配置文件,添加如下内容:

;extension=php_igbinary.dll
extension=php_redis.dll

#. 重启apache,检测是否安装成功:
phpredis-extension.png

如果出现该信息,则说明安装成功;如果 apache 重启失败,说明下载的扩展和 PHP 版本不匹配,请认真检查后重新下载。

二、PHP 连接 Redis 服务器

下面演示使用 PHP 连接 Redis 服务器,首先开启 Redis 服务器。没有安装的童鞋请参考 《Redis 安装(一)》

#. 在服务器根目录下新建 redis.php,代码如下:

<?php

    //连接本地的 Redis 服务
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    //查看服务是否运行
    echo "Server is running: " . $redis->ping();

#. 访问 http://localhost/redis.php,如果出现以下内容,则说明连接成功:

Server is running: +PONG

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Redis 安装

一、前言

安装 Redis 是开始 Redis 学习之旅的第一步,安装之前先来个简单的介绍。

1. 版本规则

Redis 约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版,如:2.6,2.8;奇数版本是非稳定版,如:2.7,2.9。推荐生产环境使用稳定版本,目前最新的稳定版本是 3.2.5

2. 操作系统

Redis 兼容大部分 POSIX 系统 ,包括 Linux、macOS 等常用操作系统,在这些系统中推荐直接下载 Redis 源代码编译安装以获得最新的稳定版本。

Redis 官方不支持 Windows,但微软发布了一个可以在 Windows 运行的 Redis 分支,需要的童鞋也可以下载使用。

二、安装

下面介绍 Redis 的安装,只涉及亲测过的 Linux、macOS 和 Windows 三个操作系统。

1. Linux、macOS 下安装

下载、解压、安装:

$ wget http://download.redis.io/releases/redis-3.2.5.tar.gz
$ tar xzf redis-3.2.5.tar.gz
$ cd redis-3.2.5
$ make

编译成功后,就可以开启 Redis 服务端,命令如下:

$ src/redis-server 

然后打开 Redis 客户端与服务端进行互动,命令如下:

$ src/redis-cli 
127.0.0.1:6379> set name sean
OK
127.0.0.1:6379> get name
"sean"
127.0.0.1:6379>

2. Windows 下安装

当前 Redis 的 windows 最新稳定版本为 3.2.100,此处我们选择下载 Redis-x64-3.2.100.zip 即可。地址为:https://github.com/MSOpenTech/redis/releases。下载后解压压缩包,将解压后的文件夹复制到 D 盘下,并重命名为 redis。

下面我们开启 Redis 服务端,命令如下:

C:\Users\sean> D:
D:\>cd redis
D:\redis>redis-server.exe redis.windows.conf

打开 Redis 客户端与服务端进行互动,命令如下:

C:\Users\sean> D:
D:\>cd redis
D:\redis>redis-cli.exe
127.0.0.1:6379> set name sean
OK
127.0.0.1:6379> get name
"sean"
127.0.0.1:6379>

注:
(1). Redis 服务端默认加载 redis.conf 配置文件,由于压缩包中没有该文件,我们在此指定配置文件为 redis.windows.conf,大家可以根据自己的需要指定。
(2). 可以把redis的路径加到系统的环境变量中,这样以后就省得再切换磁盘和输路径啦!

三、相关资料

Redis 官网:http://redis.io
Redis Windows 版本:https://github.com/MSOpenTech/Redis


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法

使用 phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法。

问题一:

执行 phpize 报错如下:

$ phpize 
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No:  

解决方法:

$ ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include /usr/include

PS:如果 sudo 授权后仍提示没有操作权限,请参考文章 macOS 中的 Rootless 机制

问题二:

执行 phpize 报错如下:

$ phpize 
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

解决方法:

先安装 Homebrew :

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后安装 autoconf :

$ brew install autoconf

PS:Homebrew 的强大谁用谁知道。关于什么是 Homebrew,以及 Homebrew 的使用,请点击 Homebrew传送门。不建议手动安装 autoconf 软件包,因为依赖包太多~~


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

macOS 中的 Rootless 机制

一、前因

苹果从 OS X El Capitan 10.11 系统开始使用了 Rootless 机制,可以将该机制理解为一个更高等级的系统的内核保护措施,系统默认将会锁定 /system/sbin/usr 这三个目录。

二、后果

Rootless 机制虽然在一定程度上增加了系统的安全性,但作为一名开发人员会经常的操作 /usr 这个目录,这个时候你会发现你使用的任何命令都会提示没有操作权限,即使使用 root 权限也不行。

比如咱们在 /usr 目录下新建一个目录 myl,命令及提示如下:

$ sudo mkdir myl
Password:
mkdir: myl: Operation not permitted

从上面的代码可以看出,即使我们使用了 sudo 授权,还是没操作权限。下面咱们来介绍怎样关闭和开启 Rootless 机制。

三、开关 Rootless

关闭和开启 Rootless 非常简单,方法如下:

重启 Mac,听到开机启动声后按下 Command+R,进入恢复模式,在上面的菜单实用工具中找到并打开 Terminal(如果顶部没出现菜单,请继续重启^_^)。输入如下命令:

1. 关闭 Rootless

$ csrutil disable

2. 开启 Rootless

$ csrutil enable

执行完命令后,重启电脑即可生效。为了系统的安全,建议大家平时都开启 Rootless,只有需要时才暂时关闭。


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Homebrew - macOS 不可或缺的套件管理器

一、Homebrew 是什么?

Unix/Linux 安装软件的时候有个很常见、也很令人头疼的事情,那就是软件包依赖。值得高兴的是,当前主流的 Linux 两大发行版本都自带了解决方案,Red hatyumUbuntuapt-get

macOS 也是 Unix 系系统,忧伤的是 macOS 没有提供类似的解决方案,幸运的是有第三方提供了解决方案。本文介绍的就是 macOS 上最受欢迎的 Homebrew,Homebrew 简称 brew,是 macOS 上的软件包管理工具,能很方便的安装(及依赖包)和卸载软件。

二、Homebrew 的安装

Homebrew 的安装非常简单,安装需要使用 Ruby,macOS 中默认已经安装了 Ruby,所以只需复制如下命令到终端中执行即可:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

稍等片刻即可安装成功。

三、Homebrew 的使用

Homebrew 使用非常简单,常用的有搜索、安装、卸载软件,使用如下:

1. 搜索软件:brew search 软件名,如:

$ brew search wget

2. 安装软件:brew install 软件名,如:

$ brew install wget

3. 卸载软件:brew remove 软件名,如:

$ brew remove wget

四、相关资料

如需更多的资料,去官网和官方的 Github 去探索吧!

官网:http://brew.sh/index_zh-cn.html
Github:https://github.com/Homebrew/brew/


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)

macOS 中已经内置了 PHP、Python、Ruby、Perl 等常用的脚本语言,以及 Apache HTTP 服务器,所以使用起来非常方便。本文以最新的 macOS Sierra 10.12 配置 MAMP 开发环境为例,本文同样适用其它 macOS 版本的配置,macOS Sierra 10.12 中内置的 PHP 版本为 5.6。

一、配置Apache

macOS Sierra 已内置 Apache 服务器,不需要我们自己编译安装,只需开启 Apache 即可使用。

开关服务

可以通过如下命令进行开启、关闭以及重启:

$ sudo apachectl start | stop | restart

开启后,打开浏览器,访问http://localhost/index.html.en如果出现It works!,则 Apache 可以正常使用。

修改配置

配置文件在 /etc/apache2/httpd.conf 文件中,如果需要配置,修改该文件重启即可。比如咱们对如下配置项进行修改:

#. 默认 Web 根目录配置项为:

DocumentRoot "/Library/WebServer/Documents"

我们修改为当前宿主目录下的webroot目录(我的账号为sean),修改后为:

DocumentRoot "/Users/sean/webroot"

还可以修改目录的相关权限:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory "/Users/sean/webroot">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

#. 还可以修改以当前用户运行Apache,省的以后老是需要修改权限,只需要做如下修改:

# User _www
User sean

当然这个配置只能在开发环境配置,正式服务器配置成这样会存在安全隐患。

配置好后重启 Apache,在 /Users/sean/webroot 目录下新建 index.html,内容为 ”Hello World!“,访问 http://localhost,如果出现 Hello World!,则配置成功。

二、配置 PHP

macOS Sierra 已内置了 PHP 5.6,因此我们只需要在 Apache 的配置中加载 PHP 模块即可。php、phpize 等命令都在 /usr/bin 目录下。

加载 PHP 模块

打开 Apache 配置文件/etc/apache2/httpd.conf, 找到如下代码,去掉前面的注释(#):

#LoadModule php5_module libexec/apache2/libphp5.so

生成配置文件

默认没有生成 php.ini 配置文件,运行如下命令生成,也可以直接拷贝改名字:

$ sudo cp /etc/php.ini.default /etc/php.ini

测试是否加载成功

重启 Apache 后,在 /Users/sean/webroot 目录下新建 phpinfo.php,内容如下

<?php

phpinfo();

打开浏览器,访问http://localhost/phpinfo.php,如果出现 PHP 的相关信息,则配置成功。

三、安装 Mysql

macOS Sierra 没有内置 Mysql,所以需要自己下载安装。

下载 Mysql

Mysql 官网 下载 .dmg 文件安装即可,本文下载的版本为 Mysql 5.7.16,请按下图指示进行下载:

mysql-download.png

安装 Mysql

下载后,双击安装即可,安装完成后,会设置一个初始的密码,如下图:

mysql-password.png

修改密码

Mysql 的所有命令都在 /usr/local/mysql/bin 目录中,下面我们使用 mysqladmin 命令把 root 用户的初始密码修改为 root123,进入该目录,在命令行执行以下命令:

$ ./mysqladmin -u root -p password root123

回车后输入上图中的初始密码 “h#.a%=reR3)=“ 即可修改成功。

登录 Mysql

下面我们用 root 账号在命令行中登录 Mysql,命令如下:

$ ./mysql -uroot -proot123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> 

登录后如果出现上图的界面,则 Mysql 安装成功。顺便推荐一个 macOS 中非常好用的 Mysql 客户端工具:Sequel Pro

四、总结

这样我们就配置好了 MAMP 开发环境,下面大家就可以愉快的玩耍了!


本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma