Composer 初试

Composer 不是一个包管理器,默认下它不会全局安装任何包,只是在一个项目的某个目录中进行安装,它只是一个依赖管理工具。 Composer 解决的问题是: 你有一个项目依赖于若干个库 其中一些库依赖于其他库 你声明你依赖的东西 Composer 会找出哪个版本的包需要安装,并安装他们(将他们下载到你的项目中) 安装 curl -sS https://getcomposer.org/installer | php installer是一个PHP脚本,用来下载真正的composer.phar,composer.phar会保存到当前目录中。可以使用 --install-dir指定保存目录。 将composer.phar移动到PATH中 mv composer.phar /usr/local/bin/composer 这样就可以直接使用composer命令 使用 composer help 非常有用 composer install 读取当前目录下的composer.lock文件,下载和安装其中提到的库和依赖。如果composer.lock不存在,则查看composer.json文件。 composer update 读取当前目录中的composer.json文件,更新、删除或者安装所有的依赖。 composer init composer require xx 添加xx依赖到composer.json中,并安装他们 修改composer 全局配置composer config -g repo.packagist composer https://packagist.phpcomposer.com 链接 Composer中文文档 Packagist/Composer中国全量镜像

January 21, 2017

PHP 使用 xdebug 调试之路

PHPStorm中调试利用的是xdebug的remote特性,使用的是 DBGp协议,PHPStorm是一个实现了DBGp协议的客户端 在php.ini中启用xdebug.remote_enable, 配置xdebug.remote_host和xdebug.remote_port, port默认是9000. 通过phpinfo()函数的输出,可以在Loaded Configuration File中看到实际加载的php.ini文件是哪一个。 sudo apt install php-xdebug之后,会自动在/etc/php/7.0/apache2/conf.d中创建一个xdebug的配置文件,可以在这个文件中修改关于xdebug的配置,而不用去改通用的php.ini. client启动之后会监听 port,等待xdebug发送的请求。 要使php解释器在运行的时候activate xdebug,有三种方式: 从命令行运行php脚本时,设置环境变量export XDEBUG_CONFIG="idekey=session_name", 同样也可以在XDEBUG_CONFIG环境变量中设置remote_host,remote_port等属性。 从一个浏览器中启动debugger,需要传递一个XDEBUG_SESSION_START=session_name参数,这个参数可以是GET,POST或者Cookie。可以使用一些浏览器的插件自动传递这个参数。 只要xdebug.remtoe_enable开启了,PHPStorm打开了 Listening for PHP Debug,也就是服务器和客户端都准备好了,然后浏览器发送请求的时候包含一个XDEBUG_SESSION_START参数(?文档中写的是XDEBUG_SESSION_START,而实际上bookmark和插件中设置的cookie都是XDEBUG_SESSION),就可以愉快地调试了。

January 21, 2017

PHP 基础回顾

include/require 如果没有提供路径,则会查找include_path,如果没有找到,则会查找当前脚本所在目录和当前工作目录。如果均失败的话,include 会产生一个 warnning,require会产生一个 fatal error. 当一个文件被 included时,被包含文件中的代码继承了include所在行的变量作用域。任何在include处可见的变量,对于被包含的代码也可见(相当于将被包含的代码复制并替换include命令。)但是,被包含文件中定义的函数和类都拥有全局作用域。 在解析被包含的文件时,解析器会切换为 HTML模式,所以任何没有包含在 php tag中的文本都会当做HTML处理,也就是会被原样 echo 给客户端。 include失败会返回FALSE,并产生一个warning。如果include成功,并且被包含文件中没有return语句,include会返回1。 如果被包含文件中有return语句,那么执行到return语句时,会停止对被包含文件的处理,并返回return提供的值,就像调用一个普通的函数一样。 如果被包含文件中定义了函数,并且被包含了两次,则会造成 fatal error,因为函数已经被声明过了。最好使用 include_once。 安装 sudo apt-add-repository ppa:ondrej/php5 php-xxx都是PHP的扩展包,比如php-gd,php-mysql,php-xdebug需要手动安装 Apache 通过 libapache2-mod-php7.1模块与PHP互动,配置文件为/etc/apache2/mod-enabled/php7.0/中 /usr/bin/php也只是一个alternative,可以使用update-alternative改变当前php命令使用的版本 安装过程中的处理: Setting up php7.1-common (7.1.0-5+deb.sury.org~xenial+1) ... Creating config file /etc/php/7.1/mods-available/calendar.ini with new version Creating config file /etc/php/7.1/mods-available/ctype.ini with new version Creating config file /etc/php/7.1/mods-available/exif.ini with new version Creating config file /etc/php/7.1/mods-available/fileinfo.ini with new version Creating config file /etc/php/7.1/mods-available/ftp.ini with new version Creating config file /etc/php/7....

January 18, 2017