编译安装php5.6 或php7

第一步,下载源码

php官网下载地址

第二步安装php依赖包

yum install libjpeg libjpeg-devel libpng libpng-devel curl autoconf automake libtool re2c flex bison libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl curl-devel freetype freetype-devel libmcrypt libmcrypt-devel libXpm* freetype* libjpeg* libpng*

第三步解压后进入php目录,修改编码,配置并执行编译

# tar -zxvf php5.5.0.tar.gz
# cd php5.5.0

配置编译参数,对于小内存机器需要增加 –disable-fileinfo 选项

./configure --prefix=/etc/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --enable-zip --with-zlib --with-bz2 --with-mcrypt --enable-pcntl --with-gd --with-openssl --with-pcre-dir --with-curl --with-pear --enable-mbstring --enable-mbregex --enable-bcmath --enable-shmop --enable-xml --enable-gd-native-ttf --enable-opcache --enable-debug --enable-sockets  --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gettext
# make && make install  //开始编译,如果编译失败使用 make clean,然后再重新编译
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod u+x /etc/init.d/php-fpm

最后配置

修改php-fpm的配置文件,位于/usr/local/php/etc, 需要重命名

 mv php-fpm.conf.default  php-fpm.conf

修改php.ini ,取消date.timezone 注释,并修改为date.timezone = PRC

#修改nginx默认配置文件支持php
location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

启动php

systemctl enable php-fpm.service
systemctl start php-fpm.service

记录1.

php7编译可能会遇到openssl相关错误,处理方式为升级openssl和curl然后指定相关目录(--with-openssl=/etc/openssl1.1.0c --with-curl=/etc/curl7.51.0),参见编译安装openssl和curl

记录2.

编译php7报错,通过config.log 查看发现调用的错误的libcurl.so文件(/usr/local/lib/libcurl.so: undefined reference to `SSL_load_error_strings’)

记录3.

动态安装php扩展,进入同版本源码ext目录下需要安装的模块目录,执行如下操作

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

vim php.ini
extension = "gettext.so"

 

PHP安装xdebug扩展远程调试代码

准备工作

在IDEA所在机器关闭windows防火墙(或添加端口白名单)

一,安装xdebug扩展

使用pecl或编译xdebug源码安装, 这里直接使用pecl快速安装:

pecl install xdebug

 二,配置xdebug

在php.ini中添加如下配置

xdebug.auto_trace = on
xdebug.trace_output_dir = "/tmp"
xdebug.profiler_output_dir ="/tmp"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode = "req"
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_connect_back=1 #推荐,将尝试连接到发出HTTP请求的客户端,和下面配置选其一
;xdebug.remote_host=10.0.14.251 #远程调试时此处填写IDE所在客户机ip地址
;xdebug.remote_log="/work/log/debug.log"

xdebug的工作流程为当客户端开始debug时,浏览器会携带一个XDEBUG_SESSION_START 参数传递debug会话key,当php捕获到这个key时会根据配置的remote_port端口与目标机器建立一个会话链接(也就是在IDEA所在机器,所以这个端口是IDEA所在机器自身的端口,而不是在服务器上开启的端口),此端口由IDEA编辑器开启和监听

IDEA上的电话监听按钮并不是必须的, 只是代表是否主动监听调试,所以在点击监听后即使访问没有携带debug key断点也会生效,所有请求都将被调试

最后两项配置分别为允许任何机器链接调试remote_connect_back和只允许指定ip的机器调试remote_host

三,配置IDEA开发工具

配置编辑器,设置端口为对应的端口

QQ截图20160408153511

点击菜单栏Run->Edit Configurations

然后添加一个PHP Web Page配置,在老版本中为PHP Web Application,此处注意,默认有一个Templates或Defaults配置,这个只是作为添加模板使用, 所以修改是无效的,点击左上角的”+”就行了

然后在Server那里点击”…” 添加一个Server,此处注意要勾选(本地调试也需要设置同步目录)”Use path mappings(select if the servers is remote or symlinks are used)”并填写服务端对应的远程目录

QQ截图20160408153805

点击Run->Debug”xxx”即可使用携带debug key的方式进行调试

注意

如果IDEA所在机器是内网ip将无法调试,因为远程服务器无法主动和内网机器建立连接,  解决办法有两个

  1. 在内网机器的出口路由上做一个端口映射
  2. 或采用建立隧道的方式,具体参考连接

问题与解决流程

xdebug经常会遇到明明按流程来配置了但是却始终无法生效的情况,此时就需要通过配置xdebug日志来排查,推荐排查流程为

  1. 检查两边配置的端口是否一致,并确定端口是否被占用(此端口是IDEA所在客户端的端口)
  2. 开启xdebug日志xdebug.remote_log="/work/log/debug.log"创建此文件并给读写权限
  3. 再通过携带debug key的方式请求调试地址,此时会产生对应的日志内容,分析日志内容并查找解决办法,解决问题后注释此文件避免产生大量日志内容,比如我自己遇到的一个错误:
Log opened at 2018-10-11 06:11:43
I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Checking header 'REMOTE_ADDR'.
I: Remote address found, connecting to 192.168.10.138:9000.
W: Creating socket for '192.168.10.138:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. 🙁
Log closed at 2018-10-11 06:11:43

是由于windows默认开启了防火墙导致

常用快捷键使用说明

  1. (F5)step into就是单步执行,遇到子函数就进入并且继续单步执行;
  2. (F6)step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。
  3. (F7)step return就是单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函 数。

fedora19 yum 安装php5.5.1 nginx1.4.2 mysql

安装mysql

首先输入如下命令:
yum install mysql mysql-server
系统将自动完成mysql安装

如果不仅仅在本机访问数据库需要注释#skip-networking
vi /etc/my.cnf

将mysql加入开机启动,并启动mysql

systemctl enable mysqld.service
systemctl start mysqld.service

mysql安装完成!

安装nginx 与 php

yum install nginx php php-fpm
如果 没有nginx可以从http://nginx.org/en/linux_packages.html添加nginx源到yum

配置nginx.conf使nginx支持php,去掉如下代码的注释
nano /etc/nginx/nginx.conf

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

将nginx设为开机启动,启动nginx

systemctl enable nginx.service
systemctl start nginx.service

将php设为开机启动,启动php

systemctl enable php-fpm.service
systemctl start php-fpm.service

创建测试文件

info.php
<php
phpinfo();

编译安装mysql5.6.34

首先安装对应依赖包

yum  install  gcc-c++ cmake bison-devel  ncurses-devel

下载源码

wget  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz

需要注意的地方 1.默认编码 2.默认字符集 3.注意用户权限

cmake \
-DCMAKE_INSTALL_PREFIX=/work/thirdparty/mysql \
-DMYSQL_DATADIR=/work/thirdparty/mysql/data \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
make && make install

注:重新运行配置,需要删除CMakeCache.txt文件

初始化目录,如果修改了DMYSQL_DATADIR需要重新执行,并且一定要用如下路径执行

./scripts/mysql_install_db

设置启动脚本

cp support-files/mysql.server /etc/init.d/mysql

启动mysql

service mysql start

启动守护进程,可选

./bin/mysqld_safe &

设置密码

./bin/mysqladmin -u root -h 127.0.0.1 password 'xxxxxx'

登录测试

./bin/mysql -uroot -p -h 127.0.0.1

其他问题

防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
打开/etc/sysconfig/iptables
在“-A INPUT –m state –state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state –state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
service iptables restart
OK,一切配置完毕,你可以访问你的MySQL了~
CentOS 7中默认使用Firewalld做防火墙,所以修改iptables后,在重启系统后,根本不管用。
Firewalld中添加端口方法如下:
firewall-cmd –zone=public –add-port=3306/tcp –permanent
firewall-cmd –reload
//查看编译参数
cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE_LINE

编译参数参考
http://blog.sina.com.cn/s/blog_68c25adf0101402v.html

Fredora 设置中文界面与安装中文输入法

中文界面的安装有两种方式,一是安装一个中文字体他会自动下载中文依赖包,二是使用使用如下命令手动安装中文界面:

yum install kde-i18n-Chinese.noarch  kde-l10n-Chinese.noarch

sumpinyin输入法的安装

在软件管理器中搜索sunpinyin
安装结果中的四个软件包即可
如果不考虑chrome浏览器的兼容(无法使用)ibus也是很不错的选择
sudo yum install ibus ibus-pinyin

软件的卸载

自动卸载依赖包
yum remove ***
手动卸载
rpm -e ***