1. 程式人生 > >Debian8中用編譯方式安裝php7

Debian8中用編譯方式安裝php7

轉自:https://www.jianshu.com/p/b4164a656b8b

php安裝步驟:

1. 下載php-7.0.14.tar.gz,並將其解壓:

$ tar -zvxf php-7.0.14.tar.gz

2. 安裝相關依賴包:

$ apt-get install -y libxml2 libxml2-dev openssl libcurl4-gnutls-dev libjpeg-dev libpng12-dev libfreetype6-dev

3. 執行:ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib

注:否則會報錯:configure: error: Cannot find OpenSSL's libraries

4. 編譯:

$ cd php-7.0.14
$ ./configure --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-MySQL=shared,mysqlnd \
--with-gd --with-iconv --with-zlib --enable-zip \
--enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml \
--enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring \
--enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap \
--without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm \
--enable-fastcgi --without-gdbm --disable-fileinfo

5. 安裝:

$ make && make install

成功:

php安裝成功

php-fpm配置

  • $ cd php-7.0.14
    $ cp php.ini-production /usr/local/etc/php.ini
    在php.ini中新增一行:cgi.fix_pathinfo=0

  • $ cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
    $ cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf

  • $ vi /usr/local/etc/php-fpm.d/www.conf
    將group = nobody修改為 group = ,即將nobody刪除。否則在後面執行service php-fpm start時會報錯,即Starting php-fpm [10-Feb-2017 06:32:10] ERROR: [pool www] cannot get gid for group 'nobody'
    (可直接執行:sed -i "s/group = nobody/group = /g" /usr/local/etc/php-fpm.d/www.conf

  • $ vi /usr/local/etc/php-fpm.conf
    將php-fpm.conf最後一行的include=NONE/etc/php-fpm.d/.conf修改為include=etc/php-fpm.d/.conf
    (注:此時可以使用命令進行測試:
    $ /usr/local/sbin/php-fpm -t
    輸出:NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful 即配置正確)

  • $ cp /root/php-7.0.14/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    $ chmod 755 /etc/init.d/php-fpm
    $ service php-fpm start
    輸出:Starting php-fpm done

測試是否能解析php檔案:

注:先要安裝nginx,具體步聚見http://www.jianshu.com/p/6b70db035b95

  1. 在/usr/local/nginx/html/資料夾下建立一個用於測試的php檔案,如test.php:
<?php
    phpinfo()
?>
  1. 啟動nginx(需要對指令碼做修改),在瀏覽器中輸入http://localhost/test.php,看到以下頁面即成功。

test.php頁面

遇到的問題及解決方法

  1. .編譯時報錯:configure: error: Cannot find OpenSSL's libraries
    解決方法:
    apt-get install openssl
    apt-get install libssl
    find / -name libssl.so
    輸出:/usr/lib/x86_64-linux-gnu/libssl.so
    執行:ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
  2. 編譯時報錯:configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/
    解決方法:apt-get install libcurl4-gnutls-dev
  3. 編譯時報錯:configure: error: jpeglib.h not found.
    解決方法:apt-get install libjpeg-dev
  4. 編譯時報錯:configure: error: png.h not found.
    解決方法:apt-get install libpng12-dev
  5. 編譯報錯:configure: error: freetype-config not found.
    解決方法:apt-get install libfreetype6-dev
  6. 執行/web/php/etc/php-fpm -t報錯 :
    [email protected]:~/php-7.0.14# /web/php/sbin/php-fpm -t
    [10-Feb-2017 10:29:10] WARNING: Nothing matches the include pattern '/web/php/etc/php-fpm.d/*.conf' from /web/php/etc/php-fpm.conf at line 125.
    [10-Feb-2017 10:29:10] ERROR: No pool defined. at least one pool section must be specified in config file
    [10-Feb-2017 10:29:10] ERROR: failed to post process the configuration
    [10-Feb-2017 10:29:10] ERROR: FPM initialization failed
    解決方法:cd /web/php/etc/php-fpm.d
    cp www.conf.default www.conf