>  기사  >  백엔드 개발  >  Linux에서 PHP 컴파일 및 설치

Linux에서 PHP 컴파일 및 설치

不言
不言원래의
2018-06-02 09:34:037002검색

이 글은 주로 Linux에서 PHP를 컴파일하고 설치하는 방법을 소개하고 있습니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

PHP 실행 환경을 컴파일하고 설치했습니다. 이전 서버에 설치했는데 시간이 좀 지나서 잊어버릴 뻔 했네요. 여기저기 간단한 단계만 기억해 두었으니 나중에 참고하기 쉽게 새 서버에 다시 설치해 봤습니다. . 또한 초보자를 위한 참고 자료도 제공합니다.

1. 먼저 PHP 공식 웹사이트(http://php.net/)에서 다운로드할 수 있는 PHP 소스 코드 설치 패키지가 필요합니다. 다운로드 페이지에 포함될 탐색 모음 이때 지역에 따라 다운로드 서버를 선택할 수 있습니다. 여기서는 다운로드할 cn2.php.net을 선택합니다

2. ftp 도구를 사용하여 PHP가 설치될 서버에 소스 코드 패키지를 업로드했습니다. 여기서는 임시로 /tmp 디렉토리

에 넣습니다. (참고: Linux에서 직접 다운로드하려면 Linux 파일 다운로드 도구 wget을 사용할 수도 있습니다. , wget -O php-5.6.15.tar.gz http://cn2.php.net/get /php-5.6.15.tar.gz/from/this/mirror 형식으로, 여기서는 다음을 사용해야 합니다. O 다운로드한 파일의 이름을 지정하지 않으면 다운로드한 파일 이름이 "mirror"가 됩니다. 또한 Sohu의 미러 주소를 사용할 수도 있습니다. 다운로드 http://mirrors.sohu.com/php/***)

3 .압축된 파일의 압축을 풉니다

# tar -zxf php-5.6.15.tar.gz

4. 이전 단계에서 생성된 php-5.6.15 디렉터리에 들어가고, 이 디렉터리에서 구성 실행 파일을 실행합니다(Linux 명령에서 줄바꿈을 나타냄). 그리고 일부 다른 확장 라이브러리는 설치 전에 설치해야 합니다. 특히 설치 과정 중 오류 메시지에 따라 제거된 확장을 보완할 수 있습니다

# ./configure \
--prefix=/usr/local/php-5.6.15 \
--with-config-file-path=/usr/local/php-5.6.15/etc \
--with-mysqli \
--with-xmlrpc \
--with-openssl \
--with-zlib \
--with-freetype-dir \
--with-png-dir \
--with-jpeg-dir \
--with-gd \
--with-iconv=/usr/local/libiconv \
--enable-sockets \
--enable-zend-multibyte \
--enable-soap \
--enable-mbstring \
--enable-static \
--enable-gd-native-ttf \
--with-mcrypt \
--with-mhash \
--with-curl \
--with-xsl \
--enable-ftp \
--with-libxml-dir \
--enable-pcntl \
--enable-bcmath \
--enable-fpm

해당 ​​설명은 다음과 같습니다.

--prefix=/usr/local/php-5.6.15 \ (指定PHP的安装目录)
--with-apxs2=/usr/sbin/apxs \ (使PHP支持Apache服务器,使用yum安装Apache时,apxs默认在usr/sbin/目录下)
--with-config-file-path=/usr/local/php-5.6.12/etc \ (指定PHP的配置文件php.ini目录)
--with-mysqli[=DIR] \ (指定mysqli的安装路径,使PHP支持mysqli,PHP最新版本已经不再支持mysql扩展了)
--with-xmlrpc \ (使PHP支持XML-RPC,即XML远程方法调用)
--with-openssl \ (使PHP编译安装openssl模块,加密传输https时用到的)
--with-zlib[=DIR] \ (配置gd库的支持包zlib,zlib是提供数据压缩用的函式库)
--with-freetype-dir[=DIR] \ (配置gd库的支持包freetype,FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎)
--with-png-dir[=DIR] \ (配置gd库的支持包libpng)
--with-jpeg-dir[=DIR] \ (配置gd库的支持包libjpeg)
--with-gd \ (静态编译gd库)
--with-iconv=/usr/local/libiconv \ (iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件)
--enable-sockets \ (打开对socket的支持)
--enable-zend-multibyte \ (支持zend的多字节)
--enable-soap \ (打开对soap的支持,简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息)
--enable-mbstring \ (打开对多字节多字符串的支持)
--enable-static \ (生成静态链接库,在编译过程中,就将静态库中的代码载入程序,由此生成出的可执行程序在运行中不再需要静态库,但因为库中的程序代码被复制进目标程序中,因此生成的程序体积会比较大)
--enable-gd-native-ttf \  (支持TrueType字符串函数库)
--with-mcrypt \ (mcrypt算法扩展)
--with-mhash \  (mhash算法扩展)
--with-curl \ (打开curl浏览工具的支持)
--with-xsl \ (打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件)
--enable-ftp \ (打开对ftp的支持)
--with-libxml-dir \ (打开libxml2库的支持)
--enable-pcntl \ (扩展可以支持php的多线程操作)
--enable-bcmath \ (打开图片大小调整,用到zabbix监控的时候用到了这个模块)
--enable-fpm (打开对php-fpm的支持)

(참고: 위의 컴파일 및 설치 구성 옵션은 비교적 완전하고 선택적으로 구성할 수 있지만 제공되지 않은 일부 구성 옵션도 있습니다. 또한 PHP에는 GD 라이브러리 통합이 있지만 전제는 지원입니다. zlib 등의 패키지를 미리 설치해야 합니다. png, jpeg, freetype 등)

5. 위 설치 과정에서 보고된 오류에 대한 응답으로 제거된 확장 프로그램을 찾아보거나 yum을 사용하거나 소스 코드 패키지를 다운로드하여 수동으로 컴파일하고 설치, 설치 후 재컴파일 PHP 설치

6. PHP 설치가 완료되었으며, 구성하고 /usr/local/php-5.6.15/etc를 입력하여 php.ini 파일이 없는지 확인합니다. 이번에 설치 패키지 디렉터리는 /tmp/php이어야 합니다. - 5.6.15에서 php.ini-production을 /usr/local/php-5.6.15/etc에 복사하세요.

# cp /tmp/php-5.6.15/php.ini-production php.ini

다운로드(참고: php.ini-development는 개발 프로그램, 즉 테스트용으로 적합합니다. php.ini-production은 보안 설정이 더 높으며 온라인 제품으로 사용하기에 적합합니다. 일반적으로 php 테스트 환경(로컬)이 공식 환경(온라인)과 일치하는지 확인하기 위해 .ini-production을 php.ini로 변경합니다. 여기서는 PHP 관련 구성을 설명하지 않습니다.)

7. /local/ php-5.6.15/bin은 php 및 phpize

# vi /etc/profile

Add import PATH="$PATH:/usr/local/과 같은 명령을 쉽게 사용할 수 있도록 시스템 환경 변수에 추가되었습니다. 열린 파일 끝 -5.6.15/bin"에 php를 저장하고, 파일을 저장하고 시스템을 다시 시작하세요

8. php를 실행하세요. PHP의 작업은 php-fpm

을 실행하는 것과 같습니다.
# /usr/local/php-5.6.15/bin/php-fpm -c /usr/local/php-5.6.15/etc/php.ini -y /usr/local/php-5.6.15/etc/php-fpm.conf

最后,简单说下PHP的开机启动设置,因为一般的开机启动软件都应该被作为一项系统服务保存在 /etc/rc.d/init.d 中,所以php-fpm也应该作为一个可运行文件存在于该目录下(与MySQL的mysqld以及Apache的httpd相似),然而进入该目录下并未发现php-fpm,没关系,那我们就自己写一个脚本吧。具体脚本如下,可以直接在 /etc/rc.d/init.d 下新建一个php-fpm文件,复制下面代码,修改响应配置与自己所安装的PHP环境相同即可。

#!/bin/bash
#
# Startup script for the PHP-FPM server.
#
# chkconfig: 345 85 15
# description: PHP is an HTML-embedded scripting language
# processname: php-fpm
# config: /usr/local/php-5.6.15/etc/php.ini
 
# Source function library.
. /etc/rc.d/init.d/functions
 
PHP_PATH=/usr/local/php-5.6.15
DESC="php-fpm daemon"
NAME=php-fpm
# php-fpm路径
DAEMON=$PHP_PATH/sbin/$NAME
# 配置文件路径
CONFIGFILE=$PHP_PATH/etc/php-fpm.conf
# PID文件路径(在php-fpm.conf设置)
PIDFILE=$PHP_PATH/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
 
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
 
rh_start() {
  $DAEMON -y $CONFIGFILE || echo -n " already running"
}
 
rh_stop() {
  kill -QUIT `cat $PIDFILE` || echo -n " not running"
}
 
rh_reload() {
  kill -HUP `cat $PIDFILE` || echo -n " can't reload"
}
 
case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        rh_start
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
        rh_stop
        echo "."
        ;;
  reload)
        echo -n "Reloading $DESC configuration..."
        rh_reload
        echo "reloaded."
  ;;
  restart)
        echo -n "Restarting $DESC: $NAME"
        rh_stop
        sleep 1
        rh_start
        echo "."
        ;;
  *)
         echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
         exit 3
        ;;
esac
exit 0

之后可以通过使用service 命令进行操作

# service php-fpm start 启动php-fpm,
# service php-fpm stop 关闭php-fpm,
# service php-fpm restart重启php-fpm

使用chkconfig 命令添加、删除和查看系统开机自启动服务

# chkconfig --list 显示开机可以自动启动的服务 
# chkconfig --add php-fpm 添加开机自动启动php-fpm服务 
# chkconfig --del php-fpm 删除开机自动启动php-fpm服务

好了,关于PHP的安装基本上就完成啦~

위 내용은 Linux에서 PHP 컴파일 및 설치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.