前置條件
- 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字節碼緩存相關的設置
參考資料