php7.3源碼編譯

前置條件

  • 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字節碼緩存相關的設置

參考資料

相關文章
相關標籤/搜索