이 글은 자세한 설명을 제외하고 코드 위주로 설명하겠습니다
PHP 5.4 버전 설치를 참고하시면 되겠습니다.
PHP 최신 버전(7.3.7) 설치를 진행하겠습니다.
개요
CentOS 6.8(final)에서 yum으로 php를 설치하면 5.3.3 버전으로 설치되었습니다. 그래서 최신 버전 설치를 위해 라이브러리 소스를 다운로드하여 설치하겠습니다.
아래와 같이 설치 완료된 상태에서 진행됩니다.
httpd-------2.4.9
apr---------1.6.5
apr-util-----1.6.1
cmake------3.9.6
mysql------5.6.44
그리고 PHP의 configure 옵션은 아래와 같이 설정하겠습니다.
./configure
--with-apxs2=/home/httpd/bin/apxs
--with-config-file-path=/home/httpd/conf
--with-pdo-mysql=/usr/local/mysql
--with-gd
--with-freetype-dir=/usr/local/freetype
--with-zlib
--with-png-dir
--with-jpeg-dir
--with-mhash=/usr/local/mhash
--with-curl
--with-iconv-dir
--with-openssl
--with-gdbm
--with-gettext
--enable-sockets
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
--enable-wddx
--enable-soap
--enable-ftp
--enable-mbstring
--enable-dba
상세 내용은
# ./configure --help
로 확인할 수 있습니다.
설치할 모듈 옵션을 확인하면 좋을 거 같습니다.
접힌 글은 내용이 많으므로 조심하세요...
[root@localhost php]# ./configure --help
`configure' configures this package to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
Optional Features and Packages:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-libdir=NAME Look for libraries in .../NAME rather than .../lib
--disable-rpath Disable passing additional runtime library
search paths
--enable-re2c-cgoto Enable -g flag to re2c to use computed goto gcc extension
--disable-gcc-global-regs
whether to enable GCC global register variables
SAPI modules:
--with-apxs2=FILE Build shared Apache 2.0 Handler module. FILE is the optional
pathname to the Apache apxs tool apxs
--disable-cli Disable building CLI version of PHP
(this forces --without-pear)
--enable-embed=TYPE EXPERIMENTAL: Enable building of embedded SAPI library
TYPE is either 'shared' or 'static'. TYPE=shared
--enable-fpm Enable building of the fpm SAPI executable
--with-fpm-user=USER Set the user for php-fpm to run as. (default: nobody)
--with-fpm-group=GRP Set the group for php-fpm to run as. For a system user, this
should usually be set to match the fpm username (default: nobody)
--with-fpm-systemd Activate systemd integration
--with-fpm-acl Use POSIX Access Control Lists
--with-litespeed Build PHP as litespeed module
--enable-phpdbg Build phpdbg
--enable-phpdbg-webhelper
Build phpdbg web SAPI support
--enable-phpdbg-debug Build phpdbg in debug mode
--enable-phpdbg-readline Enable readline support in phpdbg (depends on static ext/readline)
--disable-cgi Disable building CGI version of PHP
--with-valgrind=DIR Enable valgrind support
General settings:
--enable-gcov Enable GCOV code coverage (requires LTP) - FOR DEVELOPERS ONLY!!
--enable-debug Compile with debugging symbols
--with-layout=TYPE Set how installed files will be laid out. Type can
be either PHP or GNU [PHP]
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
--with-config-file-scan-dir=PATH
Set the path where to scan for configuration files
--enable-sigchild Enable PHP's own SIGCHLD handler
--enable-libgcc Enable explicitly linking against libgcc
--disable-short-tags Disable the short-form <? start tag by default
--enable-dmalloc Enable dmalloc
--disable-ipv6 Disable IPv6 support
--enable-dtrace Enable DTrace support
--enable-fd-setsize Set size of descriptor sets
Extensions:
--with-EXTENSION=shared[,PATH]
NOTE: Not all extensions can be build as 'shared'.
Example: --with-foobar=shared,/usr/local/foobar/
o Builds the foobar extension as shared extension.
o foobar package install prefix is /usr/local/foobar/
--disable-all Disable all extensions which are enabled by default
--disable-libxml Disable LIBXML support
--with-libxml-dir=DIR LIBXML: libxml2 install prefix
--with-openssl=DIR Include OpenSSL support (requires OpenSSL >= 1.0.1)
--with-kerberos=DIR OPENSSL: Include Kerberos support
--with-system-ciphers OPENSSL: Use system default cipher list instead of hardcoded value
--with-pcre-regex=DIR Include Perl Compatible Regular Expressions support.
DIR is the PCRE install prefix BUNDLED
--with-pcre-jit Enable PCRE JIT functionality (BUNDLED only)
--with-pcre-valgrind=DIR
Enable PCRE valgrind support. Developers only!
--without-sqlite3=DIR Do not include SQLite3 support. DIR is the prefix to
SQLite3 installation directory.
--with-zlib=DIR Include ZLIB support (requires zlib >= 1.2.0.4)
--with-zlib-dir=
--enable-bcmath Enable bc style precision math functions
--with-bz2=DIR Include BZip2 support
--enable-calendar Enable support for calendar conversion
--disable-ctype Disable ctype functions
--with-curl=DIR Include cURL support
--enable-dba Build DBA with bundled modules. To build shared DBA
extension use --enable-dba=shared
--with-qdbm=DIR DBA: QDBM support
--with-gdbm=DIR DBA: GDBM support
--with-ndbm=DIR DBA: NDBM support
--with-db4=DIR DBA: Oracle Berkeley DB 4.x or 5.x support
--with-db3=DIR DBA: Oracle Berkeley DB 3.x support
--with-db2=DIR DBA: Oracle Berkeley DB 2.x support
--with-db1=DIR DBA: Oracle Berkeley DB 1.x support/emulation
--with-dbm=DIR DBA: DBM support
--with-tcadb=DIR DBA: Tokyo Cabinet abstract DB support
--with-lmdb=DIR DBA: Lightning memory-mapped database support
--without-cdb=DIR DBA: CDB support (bundled)
--disable-inifile DBA: INI support (bundled)
--disable-flatfile DBA: FlatFile support (bundled)
--disable-dom Disable DOM support
--with-libxml-dir=DIR DOM: libxml2 install prefix
--with-enchant=DIR Include enchant support.
GNU Aspell version 1.1.3 or higher required.
--enable-exif Enable EXIF (metadata from images) support
--disable-fileinfo Disable fileinfo support
--disable-filter Disable input filter support
--with-pcre-dir FILTER: pcre install prefix
--enable-ftp Enable FTP support
--with-openssl-dir=DIR FTP: openssl install prefix
--with-gd=DIR Include GD support. DIR is the GD library base
install directory BUNDLED
--with-webp-dir=DIR GD: Set the path to libwebp install prefix
--with-jpeg-dir=DIR GD: Set the path to libjpeg install prefix
--with-png-dir=DIR GD: Set the path to libpng install prefix
--with-zlib-dir=DIR GD: Set the path to libz install prefix
--with-xpm-dir=DIR GD: Set the path to libXpm install prefix
--with-freetype-dir=DIR GD: Set the path to FreeType 2 install prefix
--enable-gd-jis-conv GD: Enable JIS-mapped Japanese font support
--with-gettext=DIR Include GNU gettext support
--with-gmp=DIR Include GNU MP support
--with-mhash=DIR Include mhash support
--disable-hash Disable hash support
--without-iconv=DIR Exclude iconv support
--with-imap=DIR Include IMAP support. DIR is the c-client install prefix
--with-kerberos=DIR IMAP: Include Kerberos support. DIR is the Kerberos install prefix
--with-imap-ssl=DIR IMAP: Include SSL support. DIR is the OpenSSL install prefix
--with-interbase=DIR Include Firebird support. DIR is the Firebird base
install directory /opt/firebird
--enable-intl Enable internationalization support
--with-icu-dir=DIR Specify where ICU libraries and headers can be found
--disable-json Disable JavaScript Object Serialization support
--with-ldap=DIR Include LDAP support
--with-ldap-sasl=DIR LDAP: Include Cyrus SASL support
--enable-mbstring Enable multibyte string support
--disable-mbregex MBSTRING: Disable multibyte regex support
--disable-mbregex-backtrack
MBSTRING: Disable multibyte regex backtrack check
--with-onig=DIR MBSTRING: Use external oniguruma. DIR is the oniguruma install prefix.
If DIR is not set, the bundled oniguruma will be used
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
as FILE, the MySQL native driver will be used
--enable-embedded-mysqli
MYSQLi: Enable embedded support
Note: Does not work with MySQL native driver!
--with-mysql-sock=SOCKPATH
MySQLi/PDO_MYSQL: Location of the MySQL unix socket pointer.
If unspecified, the default locations are searched
--with-oci8=DIR Include Oracle Database OCI8 support. DIR defaults to $ORACLE_HOME.
Use --with-oci8=instantclient,/path/to/instant/client/lib
to use an Oracle Instant Client installation
--with-odbcver=HEX Force support for the passed ODBC version. A hex number is expected, default 0x0350.
Use the special value of 0 to prevent an explicit ODBCVER to be defined.
--with-adabas=DIR Include Adabas D support /usr/local
--with-sapdb=DIR Include SAP DB support /usr/local
--with-solid=DIR Include Solid support /usr/local/solid
--with-ibm-db2=DIR Include IBM DB2 support /home/db2inst1/sqllib
--with-empress=DIR Include Empress support \$EMPRESSPATH
(Empress Version >= 8.60 required)
--with-empress-bcs=DIR Include Empress Local Access support \$EMPRESSPATH
(Empress Version >= 8.60 required)
--with-custom-odbc=DIR Include user defined ODBC support. DIR is ODBC install base
directory /usr/local. Make sure to define CUSTOM_ODBC_LIBS and
have some odbc.h in your include dirs. f.e. you should define
following for Sybase SQL Anywhere 5.5.00 on QNX, prior to
running this configure script:
CPPFLAGS=\"-DODBC_QNX -DSQLANY_BUG\"
LDFLAGS=-lunix
CUSTOM_ODBC_LIBS=\"-ldblib -lodbc\"
--with-iodbc=DIR Include iODBC support /usr/local
--with-esoob=DIR Include Easysoft OOB support /usr/local/easysoft/oob/client
--with-unixODBC=DIR Include unixODBC support /usr/local
--with-dbmaker=DIR Include DBMaker support
--disable-opcache Disable Zend OPcache support
--disable-opcache-file Disable file based caching
--disable-huge-code-pages
Disable copying PHP CODE pages into HUGE PAGES
--enable-pcntl Enable pcntl support (CLI/CGI only)
--disable-pdo Disable PHP Data Objects support
--with-pdo-dblib=DIR PDO: DBLIB-DB support. DIR is the FreeTDS home directory
--with-pdo-firebird=DIR PDO: Firebird support. DIR is the Firebird base
install directory /opt/firebird
--with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory
If no value or mysqlnd is passed as DIR, the
MySQL native driver will be used
--with-zlib-dir=DIR PDO_MySQL: Set the path to libz install prefix
--with-pdo-oci=DIR PDO: Oracle OCI support. DIR defaults to $ORACLE_HOME.
Use --with-pdo-oci=instantclient,/path/to/instant/client/lib
for an Oracle Instant Client installation.
--with-pdo-odbc=flavour,dir
PDO: Support for 'flavour' ODBC driver.
include and lib dirs are looked for under 'dir'.
'flavour' can be one of: ibm-db2, iODBC, unixODBC, generic
If ',dir' part is omitted, default for the flavour
you have selected will be used. e.g.:
--with-pdo-odbc=unixODBC
will check for unixODBC under /usr/local. You may attempt
to use an otherwise unsupported driver using the 'generic'
flavour. The syntax for generic ODBC support is:
--with-pdo-odbc=generic,dir,libname,ldflags,cflags
When built as 'shared' the extension filename is always pdo_odbc.so
--with-pdo-pgsql=DIR PDO: PostgreSQL support. DIR is the PostgreSQL base
install directory or the path to pg_config
--without-pdo-sqlite=DIR
PDO: sqlite 3 support. DIR is the sqlite base
install directory BUNDLED
--with-pgsql=DIR Include PostgreSQL support. DIR is the PostgreSQL
base install directory or the path to pg_config
--disable-phar Disable phar support
--disable-posix Disable POSIX-like functions
--with-pspell=DIR Include PSPELL support.
GNU Aspell version 0.50.0 or higher required
--with-libedit=DIR Include libedit readline replacement (CLI/CGI only)
--with-readline=DIR Include readline support (CLI/CGI only)
--with-recode=DIR Include recode support
--disable-session Disable session support
--with-mm=DIR SESSION: Include mm support for session storage
--enable-shmop Enable shmop support
--disable-simplexml Disable SimpleXML support
--with-libxml-dir=DIR SimpleXML: libxml2 install prefix
--with-snmp=DIR Include SNMP support
--with-openssl-dir=DIR SNMP: openssl install prefix
--enable-soap Enable SOAP support
--with-libxml-dir=DIR SOAP: libxml2 install prefix
--enable-sockets Enable sockets support
--with-sodium=DIR Include sodium support
--with-password-argon2=DIR
Include Argon2 support in password_*. DIR is the Argon2 shared library path
--enable-sysvmsg Enable sysvmsg support
--enable-sysvsem Enable System V semaphore support
--enable-sysvshm Enable the System V shared memory support
--with-tidy=DIR Include TIDY support
--disable-tokenizer Disable tokenizer support
--enable-wddx Enable WDDX support
--with-libxml-dir=DIR WDDX: libxml2 install prefix
--with-libexpat-dir=DIR WDDX: libexpat dir for XMLRPC-EPI (deprecated)
--disable-xml Disable XML support
--with-libxml-dir=DIR XML: libxml2 install prefix
--with-libexpat-dir=DIR XML: libexpat install prefix (deprecated)
--disable-xmlreader Disable XMLReader support
--with-libxml-dir=DIR XMLReader: libxml2 install prefix
--with-xmlrpc=DIR Include XMLRPC-EPI support
--with-libxml-dir=DIR XMLRPC-EPI: libxml2 install prefix
--with-libexpat-dir=DIR XMLRPC-EPI: libexpat dir for XMLRPC-EPI (deprecated)
--with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI
--disable-xmlwriter Disable XMLWriter support
--with-libxml-dir=DIR XMLWriter: libxml2 install prefix
--with-xsl=DIR Include XSL support. DIR is the libxslt base
install directory (libxslt >= 1.1.0 required)
--enable-zend-test Enable zend-test extension
--enable-zip Include Zip read/write support
--with-zlib-dir=DIR ZIP: Set the path to libz install prefix
--with-pcre-dir ZIP: pcre install prefix
--with-libzip=DIR ZIP: use libzip
--enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly
when required by other extensions
--disable-mysqlnd-compression-support
Disable support for the MySQL compressed protocol in mysqlnd
--with-zlib-dir=DIR mysqlnd: Set the path to libz install prefix
PEAR:
--with-pear=DIR Install PEAR in DIR [PREFIX/lib/php]
--without-pear Do not install PEAR
Zend:
--enable-maintainer-zts Enable thread safety - for code maintainers only!!
--disable-inline-optimization
If building zend_execute.lo fails, try this switch
--disable-zend-signals whether to enable zend signal handling
TSRM:
--with-tsrm-pth=pth-config
Use GNU Pth
--with-tsrm-st Use SGI's State Threads
--with-tsrm-pthreads Use POSIX threads (default)
Libtool:
--enable-shared=PKGS Build shared libraries default=yes
--enable-static=PKGS Build static libraries default=yes
--enable-fast-install=PKGS
Optimize for fast installation default=yes
--with-gnu-ld Assume the C compiler uses GNU ld default=no
--disable-libtool-lock Avoid locking (might break parallel builds)
--with-pic Try to use only PIC/non-PIC objects default=use both
--with-tags=TAGS Include additional configurations automatic
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L if you have libraries in a
nonstandard directory
LIBS libraries to pass to the linker, e.g. -l
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
you have headers in a nonstandard directory
CPP C preprocessor
YACC The `Yet Another Compiler Compiler' implementation to use.
Defaults to the first program found out of: `bison -y', `byacc',
`yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC.
This script will default YFLAGS to the empty string to avoid a
default value of `-d' given by some make applications.
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CXXCPP C++ preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to the package provider.
php 라이브러리 소스 다운 및 설치
특별한 버전을 사용하고 싶은 경우 라이브러리 소스를 다운받아 설치합니다.
그게 아니라면
# yum install -y 패키지
로 설치하여도 됩니다.
libgd
# yum install -y gd-devel
위 명령어로 gd 관련된 패키지가 설치됩니다. (freetype, libpng, jpeg, zlib, Xpm 등등)
freetype 2.10.1
# cd /home/src
# wget https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz
# tar xvzf freetype-2.10.1.tar.gz
# cd freetype-2.10.1
# ./configure --prefix=/usr/local/freetype
# make && make install
php 7.3.7 버전에서 freetype는 2.10.0 이상의 버전이 필요해서 설치하였습니다.
libpng
# yum install -y libpng-devel
jpeg
# yum install -y libjpeg-devel
zlib
# yum install zlib-devel
Xpm
# yum install -y libXpm-devel
curl
# yum install -y curl-devel
PHP 컴파일 및 설치
php 7.3.7
# wget http://mirror.cogentco.com/pub/php/php-7.3.7.tar.gz
# mv /home/src/php-7.3.7 /usr/local/php
# cd /usr/local/php
# ./configure --with-apxs2=/home/httpd/bin/apxs --with-config-file-path=/home/httpd/conf --with-pdo-mysql=/usr/local/mysql --with-gd --with-freetype-dir=/usr/local/freetype --with-zlib --with-png-dir --with-jpeg-dir --with-mhash --with-curl --with-iconv-dir --with-openssl --with-gdbm --with-gettext --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-soap --enable-ftp --enable-mbstring --enable-dba
# make && make install
php 파일 수정 (php 설정)
# cp -avr /usr/local/php/php.ini-development /home/httpd/conf/php.ini
# vi /home/httpd/conf/php.ini
310줄
disable_functions=exec,passthru,shell_exec,system,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
849줄
allow_url_fopen = Off
953줄
date.timezone = Asia/Seoul
192줄
short_open_tag= On
그 외 옵션
disable_functions=exec,passthru,shell_exec,system,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
-> disable_function : php에서 사용 금지할 함수들을 설정
- allow_url_fopen = Off -> url을 이용하여 파일을 열 수 있는지에 대한 설정, 보안상 기본적으로 꺼두는 것이 좋다.
- date.timezone = Asia/Seoul -> 해당 시간대 설정
- short_open_tag= On -> ( <? 태그의 사용을 허가함 5.4 버전에서는 기본으로 Off 되어 있음)
- file_uploads = On -> 파일 업로드를 허용할지 설정하는 부분
- upload_max_filesize = 20M -> 최대 업로드 파일 사이즈
- post_max_size = 20M -> Post방식으로 넘겨질 최대 데이터 사이즈
- max_execution_time = 300 -> 최대 실행시간, 0으로 설정시 무한대
- memory_limit = 20M -> 스크립트 최대 메모리 소비량, php 업로드 용량 설정은 위의 부분을 수정
Apache - PHP 연동
# vi /home/httpd/conf/httpd.conf -> php 모듈 추가 확인
LoadModule php7_module modules/libphp7.so
# vi /home/httpd/conf/httpd.conf -> php 설정
AddType application/x-tar .tgz 아래 라인에 밑의 두 라인을 추가
AddType application/x-httpd-php .php .php3 .ph .inc .ini
AddType application/x-httpd-php-source .phps
연동 확인
# vi /home/httpd/htdocs/phpinfo.php
<? phpinfo() ?>
서비스 등록
# ln -s /home/httpd/bin/apachectl /etc/init.d/httpd
서비스 시작
# service httpd start
혼자 공부하는데 낑낑거리면서 1주일 걸린 거 같습니다...
갈길이 머네요.
'System > CentOS | Ubuntu' 카테고리의 다른 글
[CentOS 6] vsftp 설치 및 설정 (0) | 2019.07.24 |
---|---|
[CentOS 6] PHP(5.4.27 -> 7.3.7) 업그레이드 (0) | 2019.07.19 |
[CentOS 6] configure error (0) | 2019.07.16 |
[CentOS 6] PHP 모듈 추가(재컴파일) (1) | 2019.07.12 |
[CentOS 6] PHP 모듈 추가(재컴파일 없이 - phpize) (0) | 2019.07.10 |