咱們使用vagrant創建虛擬環境,這裏使用"chef/centos-6.5"這個box,這個box是一個比較純淨的CentOS-6.5系統。 關於Vagrant如何使用,請參考Vagrant快速入門。php
$ vagrant init chef/centos-6.5 $ vagrant up
執行上述命令以後,就已經創建了一個centos-6.5的虛擬機而且啓動了,這時咱們使用命令ssh
鏈接到虛擬機。html
$ vagrant ssh
提示符變成了[vagrant@localhost ~]$
,說明成功鏈接到了虛擬機。接下來,咱們就能夠開始PHP開發環境的安裝配置了。mysql
若是不使用vagrant,能夠本身安裝一個CentOS系統或者是虛擬機,如下步驟與vagrant沒有直接關係。git
####編譯源碼安裝PHPgithub
首先,下載PHP安裝文件,咱們使用源碼編譯安裝 PHP 5.4.35,到PHP官網下載PHP安裝文件。sql
$ wget http://jp1.php.net/distributions/php-5.4.35.tar.gz $ tar -zxvf php-5.4.35.tar.gz $ cd php-5.4.35
接下來對PHP源碼進行編譯安裝,進入到源碼目錄以後,執行下列命令安裝:centos
注意,若是須要mysql的話,最好是在變異的時候就提供參數而且指定爲使用mysqlnd庫,不然單獨編譯 擴展的形式安裝只能使用MySQL Client Library。安全
$ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
執行上述命令以後,提示以下錯誤:bash
configure: error: no acceptable C compiler found in $PATH
這是由於沒有安裝gcc編譯器,咱們須要先安裝gcc。app
$ sudo yum install gcc
安裝以後,從新編譯,此次出現了新的錯誤:
configure: error: xml2-config not found. Please check your libxml2 installation.
提示找不到libxml2
,沒問題,安裝一下就好了。
$ sudo yum install libxml2-devel
繼續從新編譯,編譯安裝的過程就是不斷解決問題的過程,每次遇到問題,咱們去解決問題,沒有什麼是能難道咱們的!
configure: error: Cannot find OpenSSL\'s <evp.h>
由於咱們啓用了--with-openssl
,所以,咱們須要安裝openssl-devel
。
$ sudo yum install openssl-devel
再次編譯,提示
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
錯誤已經說明了,安裝一下libcurl
$ sudo yum install libcurl-devel
繼續編譯,咱們還會遇到以下錯誤
configure: error: jpeglib.h not found.
由於咱們的編譯參數中提供了對GD庫的支持,所以須要安裝如下幾個庫。
$ sudo yum install libjpeg libjpeg-devel $ sudo yum install libpng libpng-devel $ sudo yum install freetype freetype-devel
安裝了這麼多lib,總該成功了吧,再次編譯,悲劇的是,又報錯了:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
咱們還須要安裝libmcrypt
,這個lib在yum中是沒有的,所以須要下載下來,手動編譯。
$ wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz $ tar -zxvf libmcrypt-2.5.7.tar.gz $ cd libmcrypt-2.5.7 $ ./configure $ make $ sudo make install
好了,咱們再編譯一次,此次必定要成功了,再不成功就不玩了。。。幸運的是,此次configure
成功, 一氣呵成,編譯安裝:
$ make $ sudo make install
一切都順利的話,咱們已經成功編譯而且安裝了PHP,安裝目錄在/usr/local/php
。
最後,咱們須要提供php的配置文件php.ini
。
$ sudo cp php.ini-development /usr/local/php/etc/php.ini $ sudo mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
PHP的安裝目錄由
configure
的--prefix=目錄
參數指定。另外,這裏咱們搭建的是用於開發的環境, 若是須要做爲生產環境,則須要注意一些安全性問題,同時,建議不要拷貝php.ini-development
文件了, 而是拷貝php.ini-production
文件。
查看一下PHP的版本:
$ /usr/local/php/bin/php --version PHP 5.4.35 (cli) (built: Nov 25 2014 08:23:11) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
爲了操做方便,能夠將php的bin
目錄添加到環境變量。編輯~/.bash_profile
, 在export PATH
上面添加下面一行內容:
PATH=$PATH:/usr/local/php/bin
而後執行以下命令
$ source ~/.bash_profile
這樣,咱們就能夠直接使用命令,而不須要添加目錄了。
小技巧:如何查看PHP使用的是哪一個配置文件?
$ strace -e open php 2>&1 |grep php.ini open("/usr/local/php/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/php/etc/php.ini", O_RDONLY) = 3
若是沒有安裝
strace
命令,使用yum install strace
安裝便可。
####安裝擴展 安裝完成基本的PHP了,接下來咱們須要安裝一些符合業務須要的擴展。
#####安裝yaf開發框架擴展 執行如下命令,使用pecl進行安裝:
$ sudo /usr/local/php/bin/pecl install yaf
不出意外的話,上述命令足以完成yaf的安裝,接下來,須要在php.ini
文件中啓用yaf擴展。 編輯/usr/local/php/etc/php.ini
,加入如下內容
extension=yaf.so
#####安裝mysql和mysqli擴展
安裝mysql相關擴展,推薦使用mysqlnd庫,可是找了半天,實在是沒有找到好的辦法單獨編譯mysql擴展使用 mysqlnd庫,最後在文檔中看到下面這段內容:
The MySQL database extensions must be configured to use the MySQL Client Library. In order to use the MySQL Native Driver, PHP needs to be built specifying that the MySQL database extensions are compiled with MySQL Native Driver support. This is done through configuration options prior to building the PHP source code.
這裏說的是若是安裝mysql擴展的話,只能使用MySQL Client Library(百度/谷歌有好多安裝教程)。若是但願使用mysqlnd庫的話, 只能在編譯PHP的時候指定。所以,好像是隻能從新編譯PHP了。若是你有好的辦法,能夠交流交流。
#####安裝eAccelerator擴展
$ wget https://github.com/eaccelerator/eaccelerator/archive/master.zip -O eaccelerator.zip $ sudo yum install unzip $ unzip eaccelerator.zip $ cd eaccelerator-master/ $ phpize $ ./configure --enable-shared $ make $ sudo make install
在php.ini中增長eAccelerator的配置信息:
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0"
執行php -v
能夠看到
$ php -v PHP 5.4.35 (cli) (built: Nov 25 2014 10:40:18) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator
#####安裝Xdebug擴展
$ wget http://github.com/xdebug/xdebug/archive/master.zip -O xdebug.zip $ unzip xdebug.zip $ cd xdebug-master $ /usr/local/php/bin/phpize $ ./configure --enable-xdebug $ make $ sudo make install
接下來配置php.ini,加入該擴展
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so" xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_connect_back=1 ;xdebug.remote_autostart=1