前置條件
- autoconf:2.59+
- automake:1.4+
- libtool:1.4.x(除了1.4.2)
- re2c:0.13.4+
- bison:建議1.281.35 或 1.75
- 依賴的庫
yum install gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib \
zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel curl curl-devel openssl openssl-devel libzip libzip-devel \
libwebp libwebp-devel
- 若是須要安裝libzip擴展,須要安裝libzip libzip-devel庫,版本>=0.11,yum倉庫自帶的版本比較低,須要手動編譯libzip
- 手動編譯libzip須要先安裝cmake,libzip版本選擇跟cmake適配的版本,這裏選擇1.2.0 libzip版本,libzip手動編譯默認安裝在/usr/local目錄下
環境檢查
- 線程安全版本:--enable-maintainer-zts
- 多進程方式使用非線程安全版本便可
[root@wadeyu php-7.3.4]# ./configure --prefix=/usr/local/php7.3 --with-config-file-path=/usr/local/php7.3/etc \
--with-mysqli=mysqlnd --with-iconv-dir=/usr --with-gd --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-webp-dir=/usr \
--with-zlib --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring \
--with-openssl --with-mhash --enable-pcntl --enable-sockets --enable-soap --without-pear --with-libzip=/usr/local --with-bz2 --enable-calendar \
--enable-ftp --enable-ctype --enable-exif --disable-ipv6 --with-sqlite3 --enable-pdo --with-pdo-mysql=mysqlnd --enable-phar --with-curl --with-tsrm-pthreads
編譯安裝
- 編譯須要比較長的時間,不一樣硬件配置的機器,編譯時間不同
- 個人樹莓派1G4核的配置,編譯了差很少1個半小時 :(
[root@wadeyu php-7.3.4]# make && make install
php配置
- 源碼中包含兩個環境的php.ini文件
- php.ini.development 用於開發環境
- php.ini.production 用於正式環境
- 正式須要關注的配置項
;設置php容許操做的目錄,多用戶共享環境須要設置
open_basedir=
;禁用不安全的函數,多個使用,分隔
disable_functions=
;禁用不安全的類,多個使用,分隔
disable_classes=
;web header是否添加php版本信息,默認是開啓
expose_php = On
;腳本執行超時時間,單位秒
max_execution_time = 30
;腳本解析請求數據的超時時間,單位秒
max_input_time = 60
;腳本可以使用的最大的內存資源
memory_limit = 128M
;;
;;
;設置錯誤報告的級別,生產環境默認除了E_DEPRECATED,E_STRICT,其它都包含
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
;php是否能夠輸出錯誤,生產環境要關閉
display_errors = Off
;是否輸出php啓動時的錯誤,生產環境要關閉
display_startup_errors = Off
;是否開啓記錄錯誤日誌
log_errors = On
;錯誤信息是否添加html標籤,默認是開啓
html_errors = On
;指定報錯日誌存放的地方,默認未設置
error_log =
;;
;;
;post方式php可接收的最大數據量
post_max_size = 8M
;;
;;
;容許上傳的單個文件大小
upload_max_filesize = 2M
;;
;;
;是否容許遠程打開文件
allow_url_fopen = On
;是否容許包含遠程文件,線上要關閉,有安全風險
allow_url_include = Off
;socket流默認超時時間,單位秒
default_socket_timeout = 60
;;
;;
;session相關配置,存儲支持files, redis, 還能夠自定義存儲引擎
;session cookie相關配置
;;
;;
;opcache字節碼緩存相關的設置
參考資料