http://www.jianshu.com/p/1d312d9f1be1php
sudo apt-get install python-software-properties software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.0-fpm php7.0-cli php7.0-mcrypt php7.0-mysql php7.0-mbstring php7.0-xml
安裝php5
http://blog.csdn.net/u014796999/article/details/52583933html
sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php5.6 sudo apt-get install php5.6-fpm
版本切換
http://blog.csdn.net/u012508757/article/details/77449818python
PHP 5.6 => PHP 7.1mysql
sudo a2dismod php5.6 sudo a2enmod php7.1 sudo service apache2 restart sudo update-alternatives --set php /usr/bin/php7.1
PHP 7.1 => PHP 5.6nginx
sudo a2dismod php7.1 sudo a2enmod php5.6 sudo service apache2 restart sudo update-alternatives --set php /usr/bin/php5.6
Nginx和PHP-FPM的進程間通訊有兩種方式,一種是TCP,一種是UNIX Domain Socket.
其中TCP是IP加端口,能夠跨服務器.而UNIX Domain Socket不通過網絡,只能用於Nginx跟PHP-FPM都在同一服務器的場景.用哪一種取決於你的PHP-FPM配置:
方式1:
php-fpm.conf: listen = 127.0.0.1:9000
nginx.conf: fastcgi_pass 127.0.0.1:9000;
方式2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
其中php-fpm.sock是一個文件,由php-fpm生成,類型是srw-rw----.git
UNIX Domain Socket可用於兩個沒有親緣關係的進程,是目前普遍使用的IPC機制,好比X Window服務器和GUI程序之間就是經過UNIX Domain Socket通信的.這種通訊方式是發生在系統內核裏而不會在網絡裏傳播.UNIX Domain Socket和長鏈接都能避免頻繁建立TCP短鏈接而致使TIME_WAIT鏈接過多的問題.對於進程間通信的兩個程序,UNIX Domain Socket的流程不會走到TCP那層,直接以文件形式,以stream socket通信.若是是TCP Socket,則須要走到IP層,對於非同一臺服務器上,TCP Socket走的就更多了.sql
UNIX Domain Socket:
Nginx <=> socket <=> PHP-FPM
TCP Socket(本地迴環):
Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM
TCP Socket(Nginx和PHP-FPM位於不一樣服務器):
Nginx <=> socket <=> TCP/IP <=> 物理層 <=> 路由器 <=> 物理層 <=> TCP/IP <=> socket <=> PHP-FPMapache
像mysql命令行客戶端鏈接mysqld服務也相似有這兩種方式:
使用Unix Socket鏈接(默認):
mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
使用TCP鏈接:
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306ubuntu
執行: php-config 能夠看到配置項。服務器
總的配置文件是 : /etc/php/7.0/fpm/php-fpm.conf
裏面 include=/etc/php/7.0/fpm/pool.d/*.conf , 可是還有一個很重要: /etc/php/7.0/fpm/php.ini
sudo gedit /etc/php/7.0/fpm/pool.d/www.conf
查看 listen 是: /run/php/php7.0-fpm.sock
sudo gedit /etc/nginx/sites-available/default
配置:
server { listen 81; server_name u.cn; index index.html index.php; root /var/www/ecshop2; location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
安裝擴展: 如下兩種寫法同樣
sudo apt-get install php7.0-gd or sudo apt-get install php-gd
查詢擴展: sudo apt-cache search xdebug
安裝: sudo apt-get install -y php-xdebug
查看安裝位置: dpkg -L php-xdebug
能夠看到安裝了不少版本,不少位置 .
sudo apt-cache search mysql
sudo apt install php5.6-mysql
安裝好不用配置.就可使用.
sudo service php-fpm restart
5.6版本,也須要以上方式安裝擴展。
如下部分不要動:
修改: vi /etc/php/7.0/fpm/php.ini
;extension=php_gd2.dll
;extension_dir = "./"
若是打開 extension_dir,因此使用 apt install php-擴展 安裝的擴展都不能使用了。
緣由是:安裝的擴展的位置在/etc/php/7.0/fpm/conf.d 中,這都是軟連接,查看引用到: /etc/php/7.0/mods-available 裏,查看 gd.ini,發現只有一句: extension=gd.so , 全局搜: sudo find / -name "gd.so" ,在 /usr/lib/php/20151012/gd.so , 至此找到了 php擴展的位置 , 因此註釋掉 php.ini 裏的 extension_dir 是錯誤的。 也說明 php7目前的配置還很混亂。
php7 不支持 mysql 擴展,改用 mysqli .強行安裝:
http://www.cnblogs.com/ghjbk/p/6740501.html
全部的文章中配置這一項都是錯的。
#先下載 http://git.php.net/?p=pecl/database/mysql.git;a=summary #解壓 tar xzvf mysql-230a828.tar.gz #進入 cd mysql-230a828/ #使用phpize初始化 下載:sudo apt-get install phpize 使用: phpize #編譯mysql擴展 ./configure --with-php-config=/etc/php/7.0/fpm/conf.d --with-mysql=mysqlnd sudo make install #重啓php sudo service php7.1-fpm restart
剛查到 apt安裝的擴展都在 /etc/php/7.0/fpm/conf.d 裏, 因此,mysql 的配置項 --with-php-config 應該指的是 mysqlnd的配置項地址。
http://www.itbulu.com/wdcp-upgrade-php569.html
wget http://soft.itbulu.com/wdcp/zendguard7.sh sh zendguard7.sh 5.6
http://www.javashuo.com/article/p-zjbriaaq-r.html
sudo gedit /etc/php/5.6/fpm/php.ini 最後添加:
xdebug.remote_enable=1 xdebug.idekey=PHPSTORM xdebug.profiler_enable=1