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

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM