php5开发环境搭建

ubuntu 16.04 开发环境

全新虚拟机,数据源切换为阿里,

nginx version: nginx/1.12.2
sqlite 3.7.17-8.el7
php5.6

install ssh

sudo apt install ssh
service ssh status

安装nginx

sudo apt install nginx

// 安装完毕后是 root 用户,改一下用户,
sudo chown -R ubuntu:ubuntu /var/log/nginx
sudo chown -R ubuntu:ubuntu /etc/nginx

// restart
sudo nginx -s reload

// start
sudo nginx

访问以下网页 http://192.168.153.141/ 应该看到 nginx 的信息

the configuration file /etc/nginx/nginx.conf
default index.html located in /usr/share/nginx/html

sqlite3

sudo apt-get install sqlite3
sqlite3 -version

源码安装 php5.6.40

tar -jxf filename.tar.bz2

apt-get install \
build-essential \
gcc \
g++ \
autoconf \
libiconv-hook-dev \
libmcrypt-dev \
libxml2-dev \
libmysqlclient-dev \
libcurl4-openssl-dev \
libjpeg8-dev \
libpng12-dev \
libfreetype6-dev \
openssl \
libssl-dev


编译环境

apt-get install \
build-essential \
gcc \
g++ \
autoconf \
libiconv-hook-dev \
libmcrypt-dev \
libxml2-dev \
libmysqlclient-dev \
libcurl4-openssl-dev \
libjpeg8-dev \
libpng12-dev \
libfreetype6-dev \
openssl \
libssl-dev

配置编译

./configure –prefix=/opt/php –with-config-file-path=/opt/php/lib –enable-mbstring –enable-ftp –with-gd –with-jpeg-dir=/usr –with-png-dir=/usr –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-openssl-dir=/usr –with-pdo-mysql=mysqlnd –with-pear –enable-sockets –with-freetype-dir=/usr –enable-gd-native-ttf –with-libxml-dir=/usr –with-xmlrpc –enable-zip –enable-fpm –enable-fpm –with-freetype-dir=/usr/lib/ –enable-cli

./configure --prefix=/usr/local/php \
--with-config-file-path=/etc/php --with-jpeg-dir=/usr --with-png-dir=/usr \
--enable-ftp \
--enable-debug \
--enable-fpm \
--enable-pcntl \
--enable-mysqlnd \
--enable-opcache \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--enable-zip \
--enable-soap \
--enable-xml \
--enable-mbstring \
--disable-rpath \
--with-pcre-regex \
--with-iconv \
--with-zlib \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--with-curl \
--with-imap-ssl

make

sudo make install

sudo mkdir /etc/php

sudo cp php.ini-development /etc/php/php.ini

将PHP的可执行目录添加到环境变量中
使用Vim/Sublime打开~/.bashrc,在末尾添加如下内容:

export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH

添加完毕后

source ~/.bashrc

此时就可以通过 php –version 查看php版本了。
php -m 查看已安装的扩展

php5

安装对应模块-然后在 phpinfo 里面检查是否安装正确

删除自带的php
sudo apt install aptitude
sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/nginx-mainline

sudo apt-get update
sudo apt-get install php5.6

sudo apt-get install php5.6-fpm php5.6-mysql php5.6-common php5.6-curl php5.6-cli php5.6-mcrypt php5.6-mbstring php5.6-dom

sudo apt-get install php5.6-cgi php5.6-cli php5.6-curl php5.6-imap php5.6-gd php5.6-sqlite3 php5.6-mbstring php5.6-json php5.6-bz2 php5.6-mcrypt php5.6-xmlrpc php5.6-gmp php5.6-xsl php5.6-soap php5.6-xml php5.6-zip php5.6-dba php5.6-dom php5.6-fpm
sudo php -v

test php support is ok

nano /usr/share/nginx/html/phpinfo.php

<?php
phpinfo();
?>
module comment
php56-php-mbstring 字符集支持
php56-pdo sqlite3 数据库支持
php56-gd gd扩展是一个开源的图像处理库,支持JPG、PNG、GIF等常见的图片格式。

配置PHP5.6

//need restart nginx
sudo nginx -s reload

安装完 pdo 需要重启
service php-fpm restart

5.启用php5-mcrypt:
sudo phpenmod mcrypt

6.重启php5-fpm:
sudo service php5.6-fpm restart

support php

这里先配置,安装完 php 在测试结果

执行命令 cd /etc/nginx/conf.d 打开 Nginx 服务配置文件目录。
执行命令 sudo nano php56.conf 创建域名规则配置文件
每个域名建立一个独立的配置文件,输入下面配置信息。

server
{
listen 80; #监听端口设为 80。
server_name www.php56.com php56.com 192.168.153.141; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /var/www/php56; #指定网站根目录。
# include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

# PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
# Fastcgi服务器和程序(PHP,Python)沟通的协议.
location ~ \.php$ {
# 设置监听端口
fastcgi_pass 127.0.0.1:9000;
# 设置nginx的默认首页文件(上面已经设置过了,可以删除)
fastcgi_index index.php;
# 设置脚本文件请求的路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 引入fastcgi的配置文件
include fastcgi_params;
}
}

重启服务,然后访问 phpinfo.php 页面
// restart
sudo nginx -s reload

配置防火墙

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

测试

http://SERVER_DOMAIN_NAME_OR_IP

配置文件和路径

默认web服务路径/etc/nginx
主配置文件 /etc/nginx/nginx.conf
虚拟主机配置文件可以添加到 /etc/nginx/conf.d
默认文档 /usr/share/nginx/html

debug

ide 所在的机器是本地端,php web 服务部署的机器是远端

20190523_071104.png

从用户发起请求到,到IDE的整个流程图如下:
20190523_071341.png

当用户的请求参数或者cookie中不带调试信息,数据流就是浏览器到Apache(或其他web容器)到PHP,如果加上了调试参数,则请求还会由PHP转给Xdebug处理,Xdebug再把信息转发给IDE,完成调试功能。

PHP 安装 Xdebug 模块
https://xdebug.org/docs/install

https://xdebug.org/wizard.php

PHP 5.6 – Xdebug 2.5

phpize 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

编译 xdebug

sudo yum install php-devel
which phpize

tar xzf xdebug
/usr/bin/phpize
./configure –enable-xdebug –with-php-config=/usr/bin/php-config
make
make test
sudo make install

重启php-fpm,可以通过phpinfo()检查你的xdebug是否安装成功,也可以随便写段错误的php代码,刷新浏览器,就能看到错误提示。

service php-fpm restart

配置php.ini文件

[Xdebug]
zend_extension=”/usr/lib64/php/modules/xdebug.so”
xdebug.profiler_enable=on
xdebug.trace_output_dir=”/usr/local/php5/xdebug/“
xdebug.profiler_output_dir=”/usr/local/php5/xdebug/“
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_port=5000 //注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>
xdebug.idekey=”PHPSTORM”
xdebug.remote_autostart = 1
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.remote_log = /tmp/xdebug.log

php –version
返回信息应该看到 xdebug 的相关信息

phpstorm 配置

xdebug

php5.6 use Xdebug 2.5.5-5.6

chrome plugin
xdebug github

In the Settings/Preferences dialog (Ctrl+Alt+S), select Languages & Frameworks | PHP.

调试配置选择 php web page

mysql5

安装mysql数据库服务器 这里默认的是5.7 ,root:1qaz

sudo apt-get install mysql-server 

下面是解决问题: 1045 - Access denied for user

现在设置mysql允许远程访问,首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

登陆数据库

mysql -uroot -p
grant all on *.* to root@'%' identified by '1qaz' with grant option;
flush privileges;
exit;

重启 mysql 服务

service mysql restart

#服务启动后端口查询
sudo netstat -anp | grep mysql

安装web服务器apache

sudo apt-get install apache2

在浏览器输入localhost查看,是否有网页显示 It works! 字样

config php

support mysql
sudo nano /etc/php/5.6/apache2/php.ini

配置时区

;date.timezone =
改成:
date.timezone = Asia/Shanghai

win

去掉模块前面的注释
display_errors = on
extension=php_mbstring.dll
extension=php_mysql.dll

mysql_connect(dbIp,name,pwd)
mysql_select_db(dbName)
mysql_set_chartset(encode)
mysql_query(“set names ‘gbk’”)
mysql_fetch_array(source data) //返回下标与键名数组
mysql_fetch_row(资源数据) //返回下标数组
mysql_fetch_object(资源数据) //返回对象形式调用
mysql_num_rows(数据资源)
mysql_close(数据资源)

ubuntu

[PDO_SQLITE]
extension=pdo_sqlite.so
extension=sqlite.so

sqlite

sudo apt-get install sqlite php5.6-sqlite3
sudo /etc/init.d/apache2 restart

centos7

centos7.2 64bit
nginx version: nginx/1.12.2
sqlite 3.7.17-8.el7
php5.6

ssh -i “e:\active_project\ext_project\gis\id_rsa_gisServer” tyler@47.100.193.211

使用 docker 搭建生产环境,这个后面再弄

安装nginx

yum -y update
yum install epel-release
yum install nginx

systemctl start nginx
systemctl enable nginx
systemctl status nginx

the configuration file /etc/nginx/nginx.conf
default index.html located in /usr/share/nginx/html

ps aux | grep nginx

support php

执行命令 cd /etc/nginx/conf.d 打开 Nginx 服务配置文件目录。
执行命令 sudo nano domain_name.conf 创建域名规则配置文件
每个域名建立一个独立的配置文件,输入下面配置信息。

server
{
listen 80; #监听端口设为 80。
server_name www.server110.com server110.com 121.11.22.33; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /var/www/server110.com; #指定网站根目录。
include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

# PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
# Fastcgi服务器和程序(PHP,Python)沟通的协议.
location ~ \.php$ {
# 设置监听端口
fastcgi_pass 127.0.0.1:9000;
# 设置nginx的默认首页文件(上面已经设置过了,可以删除)
fastcgi_index index.php;
# 设置脚本文件请求的路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 引入fastcgi的配置文件
include fastcgi_params;
}
}

重启服务,然后访问 phpinfo.php 页面
service nginx restart

配置防火墙

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

测试

http://SERVER_DOMAIN_NAME_OR_IP

配置文件和路径

默认web服务路径/etc/nginx
主配置文件 /etc/nginx/nginx.conf
虚拟主机配置文件可以添加到 /etc/nginx/conf.d
默认文档 /usr/share/nginx/html

sqlite3

这里要注意:数据库文件和所属目录的权限

sudo yum install sqlite-devel
sqlite3 -version
// 修改项目权限
chmod 777 /usr/share/nginx/html
// 修改数据文件权限
chmod 777 /usr/share/nginx/html/database
chmod 666 /usr/share/nginx/html/database/test.db

php5

安装对应模块-然后在 phpinfo 里面检查是否安装正确

配置yum源

sudo yum install epel-release
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

查看可安装的包

yum list --enablerepo=remi --enablerepo=remi-php56 | grep php56
sudo yum install yum-utils
sudo yum install php56
sudo yum install php56-php-mbstring php56-php-pdo.x86_64 php56-php-gd.x86_64
sudo yum install php56-php-gd.x86_64

php56 --version
php56 --modules

Enable php-fpm:
yum-config-manager --enable remi-php56
sudo yum install php-fpm

To ensure it also starts automatically with the server, run the following command:
sudo systemctl enable php-fpm

Running:
sudo systemctl start php-fpm

查看是否启动
netstat -tunlp |grep 9000
module comment
php56-php-mbstring 字符集支持
php56-pdo sqlite3 数据库支持
php56-gd gd扩展是一个开源的图像处理库,支持JPG、PNG、GIF等常见的图片格式。

need restart nginx

安装完 pdo 需要重启
service php-fpm restart

test php support is ok

nano /usr/share/nginx/html/phpinfo.php
<?php
phpinfo();
?>

http://xx/phpinfo.php

debug

ide 所在的机器是本地端,php web 服务部署的机器是远端

20190523_071104.png

从用户发起请求到,到IDE的整个流程图如下:
20190523_071341.png

当用户的请求参数或者cookie中不带调试信息,数据流就是浏览器到Apache(或其他web容器)到PHP,如果加上了调试参数,则请求还会由PHP转给Xdebug处理,Xdebug再把信息转发给IDE,完成调试功能。

PHP 安装 Xdebug 模块
https://xdebug.org/docs/install

https://xdebug.org/wizard.php

PHP 5.6 – Xdebug 2.5

phpize 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

编译 xdebug

sudo yum install php-devel
which phpize

tar xzf xdebug
/usr/bin/phpize
./configure –enable-xdebug –with-php-config=/usr/bin/php-config
make
make test
sudo make install

重启php-fpm,可以通过phpinfo()检查你的xdebug是否安装成功,也可以随便写段错误的php代码,刷新浏览器,就能看到错误提示。

service php-fpm restart

配置php.ini文件

[Xdebug]
zend_extension=”/usr/lib64/php/modules/xdebug.so”
xdebug.profiler_enable=on
xdebug.trace_output_dir=”/usr/local/php5/xdebug/“
xdebug.profiler_output_dir=”/usr/local/php5/xdebug/“
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_port=5000 //注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>
xdebug.idekey=”PHPSTORM”
xdebug.remote_autostart = 1
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.remote_log = /tmp/xdebug.log

php –version
返回信息应该看到 xdebug 的相关信息

phpstorm 配置

xdebug

php5.6 use Xdebug 2.5.5-5.6

chrome plugin
xdebug github

In the Settings/Preferences dialog (Ctrl+Alt+S), select Languages & Frameworks | PHP.

调试配置选择 php web page