Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des PHP-Kompilierungs- und Installationsprozesses sowie der Konfiguration der einzelnen Kompilierungsparameter

Detaillierte Erläuterung des PHP-Kompilierungs- und Installationsprozesses sowie der Konfiguration der einzelnen Kompilierungsparameter

零到壹度
零到壹度Original
2018-04-03 17:17:584149Durchsuche

In diesem Artikel werden hauptsächlich der PHP-Kompilierungs- und Installationsprozess sowie die detaillierte Erläuterung der einzelnen Kompilierungsparameterkonfigurationen vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor, um einen Blick darauf zu werfen

  • Grundlegende Schritte für die PHP-Kompilierung und -Installation

//首先要下载一个php的安装包,例如:php-5.6.25.tar.gz,tar zxvf php-5.6.25.tar.gz   
// 解压php安装包,得到一个php-5.6.25的文件夹
cd php-5.6.25  
./configure           //对php的安装进行配置,后面要加配置选项

# make && make install 
//编译安装完成之后,需要从解压后的文件夹中把php.ini-development 
//或是 php.ini-production 重命名成php.ini 复制到php安装文件中的相应位置,
//可在phpinfo中查看 相应位置.
//  把/usr/local/php/etc/php-fpm.conf.default  复制到当前文件夹下,保存未php-fpm.conf

Das Obige gilt für PHP Kompilierung und Installation Grundlegender Prozess, das Folgende ist eine detaillierte Einführung in die Konfigurationsparameter von PHP 🎜>Parameter, die nur für die CGI-Installation verwendet werden:


Hinweise
--prefix=/usr/local/php                      //指定 php 安装目录 
--with-apxs2=/usr/local/apache/bin/apxs      //整合apache,
                        //apxs功能是使用mod_so中的LoadModule指令,
                       //加载指定模块到 apache,要求 apache 要打开SO模块
--with-config-file-path=/usr/local/php/etc    //指定php.ini位置
--with-MySQL=/usr/local/mysql                 //mysql安装目录,对mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config                
                      //mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,
                      //而且还可以使访问数据库工作变得更加稳
--enable-safe-mode    //打开安全模式 
--enable-ftp          //打开ftp的支持 
--enable-zip          //打开对zip的支持
--with-bz2            //打开对bz2文件的支持 
--with-jpeg-dir       //打开对jpeg图片的支持
--with-png-dir        //打开对png图片的支持 
--with-freetype-dir   //打开对freetype字体库的支持 
--without-iconv       //关闭iconv函数,各种字符集间的转换 
--with-libXML-dir     //打开libxml2库的支持 
--with-XMLrpc         //打开xml-rpc的c语言 
--with-zlib-dir       //打开zlib库的支持 
--with-gd             //打开gd库的支持 
--enable-gd-native-ttf //支持TrueType字符串函数库 
--with-curl            //打开curl浏览工具的支持 
--with-curlwrappers    //运用curl工具打开url流 
--with-ttf             //打开freetype1.*的支持,可以不加了 
--with-xsl             //打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件 
--with-gettext         //打开gnu 的gettext 支持,编码库用到 
--with-pear            //打开pear命令的支持,PHP扩展用的 
--enable-calendar      //打开日历扩展功能 --enable-mbstring      //多字节,字符串的支持 
--enable-bcmath        //打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets       //打开 sockets 支持
--enable-exif          //图片的元数据支持 
--enable-magic-quotes  //魔术引用的支持 
--disable-rpath        //关闭额外的运行库文件 
--disable-debug        //关闭调试模式
 --with-mime-magic=/usr/share/file/magic.mime  //魔术头文件位置
  • Nachdem Sie --with-apxs2=/usr/local/apache/bin/apxs angegeben haben, aktivieren Sie nicht --enable-fpm und - -enable-fastCGI. apxs lädt PHP im PHP-Modulmodus.
--enable-fpm                 //打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI             //支持fastcgi方式启动PHP
--enable-force-CGI-redirect  //重定向方式启动PHP
--with-ncurses         //支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl         //freeTDS需要用到的,可能是链接mssql 才用到
--with-mcrypt          //mcrypt算法的扩展
--with-mhash           //mhash算法的扩展

//以上函数库需要安装

--with-gmp                     //应该是支持一种规范
--enable-inline-optimization   //优化线程
--with-openssl                 //openssl的支持,加密传输时用到的
--enable-dbase                 //建立DBA 作为共享模块
--with-pcre-dir=/usr/local/bin/pcre-config       //perl的正则库案安装位置--disable-dmalloc
--with-gdbm            //dba的gdbm支持--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte  //支持zend的多字节--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap

    Mysql muss nach dem Kompilieren der MySQL-Entwicklungsbibliothek den Pfad zu MySQL nicht angeben.
  • PHP-Kompilierung hat grundlegende Abhängigkeiten. Um PHP zu kompilieren, müssen Sie zuerst die XML-Erweiterung installieren, da der PHP5-Kern standardmäßig über XML-Unterstützung verfügt. Andere grundlegende Bibliotheken erfordern Folgendes: GD -> ; zlib, Png, Jpg, wenn Sie andere unterstützen müssen, müssen Sie die Erweiterungsbibliothek entsprechend der tatsächlichen Situation kompilieren. Die ttf-Bibliothek benötigt die Unterstützung der Freetype-Bibliothek.
  • --enable-magic-quotes ist ein äußerst nicht empfohlener Parameter. Wenn Sie PHP benötigen, um die zugrunde liegende Arbeit für Sie zu erledigen, ist es natürlich nicht sehr gründlich das Problem.

  • --with-openssl, erfordert eine OpenSSL-Bibliothek. mysqli ist der vom MySQL-Team bereitgestellte MySQL-Treiber und verfügt über viele praktische Funktionen und typische Merkmale. Allerdings ist es nicht die beste Wahl für MySQL auf der PHP-Plattform. PDO hat sich als einfache, hochparallele und leicht zu erstellende und wiederzuverwendende Standardschnittstelle erwiesen. Bei PDO trat jedoch auch vor 5.3 das Problem des Speicherüberlaufs auf. Nach 5.3 kommt es beim Lesen der LOB-Ressourcen von Oracle immer noch zu einem Speicherüberlauf, wenn der Speicher nicht begrenzt ist.

    Wenn es sich im Produktmodus befindet, wird die Verwendung von Pear, Shmop, FTP usw. nicht empfohlen. Sie müssen lediglich C/C++, Java oder sogar andere Skriptsprachen verwenden. Es gibt gute und schnelle Optionen . Keine Beschränkung auf die Verwendung von PHP zur Implementierung erforderlich. Unbekannte Klassenbibliotheken und Bibliotheken, die nicht häufig verwendet werden, werden nicht empfohlen. Magic-Quote, session.auto_start, PHP-Serverinformationen, PHP-Fehlerinformationen usw. sollten so schnell wie möglich nach Abschluss der Kompilierung geschlossen werden, um die Offenlegung von Serverinformationen zu vermeiden.
  • Der Webserver-Modus, der PHP entspricht, erfordert nur eines von Module, fastcgi und fpm. Der Server ist nicht Ihr Experimentierfeld. Fastcgi kann zwischen Nginx und lighttpd wählen. Tatsächlich verwendet Nginx auch spwan-fcgi von lighttpd für die fcgi-Prozessverwaltung. fpm verwendet PHP selbst, um mehrere Prozesse zu verwalten, ähnlich einem Back-End-Proxy. Unabhängig vom Modus sollten bei der Veröffentlichung eines Produktservers eine Prozess- und Thread-Optimierung durchgeführt und ausreichend Stresstests durchgeführt werden, um die beste Kombination von Prozessnummern zu finden.

    Wählen Sie eine PHP-OPCode-Cache-Erweiterung. Dies ist auch sehr wichtig. Unter Linux 2.6 Core und fcgi kommt es bei anderen zu erheblichen Leistungseinbußen.
  • Wenn Sie es wirklich erleben möchten, kompilieren Sie lieber mehrere PHP-Versionen, als verschiedene Erweiterungen für eine PHP-Version zu sammeln, um sie an verschiedene Umgebungen anzupassen. Das bringt Sie in ein Dilemma.


  • Erweiterungen, die separat installiert werden müssen

    gd-Bibliothek.

    Ming-Erweiterung.
  • Erweiterungen für mhash und mcrypt.

Zu den detaillierten Optionen können neben der obigen Installationseinführung auch weitere Optionen beim Kompilieren hinzugefügt werden.
Apache-Modul
Syntax: --with-apache=DIR
Beschreibung: Verwenden Sie diese Option, damit **PHP
** es als Apache-Modul, DIR, verwendet Zeichenfolge kann /usr/local/Apache oder ein anderes Verzeichnis sein, in dem Apache installiert ist
Beispiel: --with-apache=/var/lib/apache
fhttpd-Servermodul
Syntax: --with-fhttpd=DIR
Hinweis: Wenn Sie den fttpd-Server verwenden, können Sie diesen Befehl zum Kompilieren von PHP verwenden. Durch die Verwendung von Modulen zur Zusammenarbeit mit dem FTPD-Server kann eine bessere Effizienz erzielt werden.
Adabas D-Datenbank
Syntax: --with-adabas=DIR
Beschreibung: Diese Option ist erforderlich, wenn das Datenbanksystem eine Adabas D-Datenbank ist. Einzelheiten zur Adabas D-Datenbank finden Sie unter http://www.adabas.com.
Beispiel: --with-adabas=/usr/local/adabasd
dBase-Datentabelle
Syntax: --with-dbase
Erklärung: Fügen Sie einfach diese Option hinzu, nein Bedarf Für andere Parameter oder Funktionsbibliotheken ermöglicht PHP dem System den Zugriff auf die dBase-Datentabelle.
filePro-Datenbank
Syntax: --with-filepro
Beschreibung: Sie können die filePro-Datenbank lesen (schreibgeschützt), ohne den Datenbankpfad und andere Funktionsbibliotheken anzugeben.
mSQL-Datenbank
Syntax: --with-msql=DIR
Beschreibung: Bietet Zugriff auf die mSQL-Datenbank. Weitere Einzelheiten finden Sie auf der mSQL-Website http://www.hughes.com.au.
Beispiel: --with-msql=/usr/local/Hughes
MySQL-Datenbank
Syntax: --with-mysql=DIR
Beschreibung: Bietet Zugriff auf die MySQL-Datenbank . Weitere Einzelheiten finden Sie auf der MySQL-Website http://www.tcx.se.
Beispiel: --with-mysql=/usr/local/mysql
iODBC-Datenbankgerät
Syntax: --with-iodbc=DIR
Beschreibung: ODBC-Datenbankgerät bereitstellen , wird für den Zugriff auf die Backend-Datenbank verwendet. Weitere Einzelheiten finden Sie auf der iODBC-Website http://www.iodbc.org.
Beispiel: --with-iodbc=/usr/local/iodbc
OpenLink ODBC-Datenbankgerät
Syntax: --with-openlink=DIR
Beschreibung: OpenLink ODBC verwenden Datenbankgerät, das für den Zugriff auf die Back-End-Datenbank verwendet wird. Weitere Einzelheiten finden Sie auf der OpenLink ODBC-Website http://www.openlinksw.com.
Beispiel: --with-openlink=/usr/local/openlink
Oracle-Datenbank
Syntax: --with-oracle=DIR
Anleitung: Oracle-Datenbank verwenden. Die Oracle-Version muss Version 7.3 oder höher sein. Sie können in Ihrem PHP-Programm auch die Umgebungsvariable ORACLE_HOME verwenden, um den Pfad zu Oracle anzugeben. Weitere Informationen zu Oracle finden Sie auf der Website von Oracle http://www.oracle.com.
Beispiel: --with-oracle=/export/app/oracle/product/7.3.2
PostgreSQL-Datenbank
Syntax: --with-pgsql=DIR
Erklärung : PostgreSQL-Datenbank verwenden. Weitere Informationen zu PostgreSQL finden Sie auf der PostgreSQL-Website http://www.postgreSQL.org oder Taiwan Mirror-Site http://postgresql.ccit.edu.tw.
Beispiel: --with-pgsql=/usr/local/pgsql
Solid-Datenbank
Syntax: --with-solid=DIR
Beschreibung: Solid-Datenbank verwenden. Weitere Informationen zu Solid finden Sie auf der Website von Solid http://www.solidtech.com.
Beispiel: --with-solid=/usr/local/solid
Sybase-Datenbank
Syntax: --with-sybase=DIR
Beschreibung: Sybase-Datenbank verwenden. Weitere Informationen zu Sybase finden Sie auf der Sybase-Website http://www.sybase.com.
Beispiel: --with-sybase=/home/sybase
Sybase-CT-Datenbank
Syntax: --with-sybase-ct=DIR
Anweisungen: Verwenden Sie Sybase- CT-Datenbank.
Beispiel: --with-sybase-ct=/home/sybase
Velocis-Datenbank
Syntax: --with-velocis=DIR
Beschreibung: Velocis-Datenbank verwenden. Weitere Informationen zur Velocis-Datenbank finden Sie auf der Raima-Website http://www.raima.com.
Beispiel: --with-velocis=/usr/local/velocis
Benutzerdefinierter ODBC-Datenbanktreiber
Syntax: --with-custom-odbc=DIR
Beschreibung: Verwendung benutzerdefinierte ODBC-Funktionsbibliothek. Natürlich müssen Sie bei Verwendung dieser Methode die Variablen CUSTOM_ODBC_LIBS und CFLAGS angeben. Wenn Sie beispielsweise Sybase **SQL
** Anywhere auf einem QNX-Computer verwenden, müssen Sie möglicherweise die Systemumgebungsvariablen CFLAGS=-DODBC_QNX, LDFLAGS=-lunix und CUSTOM_ODBC_LIBS="-ldblib -lodbc" konfigurieren und hinzufügen -- in der PHP-Konfiguration.
Beispiel: --with-custom-odbc=/usr/local/odbc
Verwenden Sie keinen ODBC-Datenbanktreiber
Syntax: --disable-unified-odbc
Hinweis: Durch die Verwendung dieser Option werden alle ODBC-Datenbanktreiber deaktiviert. Für diese Option muss kein Pfad angegeben werden. Die von dieser Option betroffenen Optionen sind --with-iodbc, --with-solid, --with-adabas, --with-velocis und --with-custom-odbc.
LDAP Directory Protocol
Syntax: --with-ldap=DIR
Erklärung: Diese Option muss aktiviert sein, wenn Sie das Directory Protocol (Lightweight Directory Access Protocol, LDAP) verwenden möchten ). Einzelheiten zu LDAP finden Sie in den RFC-Dokumenten RFC1777 und RFC1778.
Beispiel: --with-ldap=/usr/local/ldap.
mcrypt-Kodierungsfunktionsbibliothek
Syntax: --with-mcrypt=DIR
说明: 当安装了 mcrypt 函数库后,可在编译 PHP 时加入本选项,让程序可以使用编解码功能。
范例: --with-mcrypt=/usr/local/include
Sys V 信号
语法: --enable-sysvsem
说明: 要使用 SysV 的信号 (semaphores) 机制,则要打开本选项。
XML 支持
语法: --with-xml
说明: 打开本选项可以支持 James Clark's 写的 XML 解析程序库。
维护模式
语法: --enable-maintainer-mode
说明: 本选项一般不会打开,除非是 PHP 开发人员比较有用。
正则表达式程序库
语法: --with-system-regex
说明: 若您需要额外的正则表达式功能,可以加入本选项。
PHP 配置文件
语法: --with-config-file-path=DIR
说明: 用来指定 php3.ini 或 php4.ini 的路径,供 PHP 初始化时使用。
范例: --with-config-file-path=/usr/local/lib
PHP 执行路径
语法: --with-exec-dir=DIR
说明: 有时为了系统的安全性考虑,会指定 PHP 程序一定要在哪个目录执行。
范例: --with-exec-dir=/usr/local/bin
调试模式
语法: --enable-debug
说明: 本选项一般不会使用,除非在开发 PHP 程序时比较有用。它可以显示额外的错误信息。
安全模式
语法: --enable-safe-mode
说明: 默认值是打开的,可以对系统安全提供比较多的保护。
变量追踪
语法: --enable-track-vars
说明: 让 PHP 能 追踪 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三个变量,一般是打开的。
自动加引入字符
语法: --enable-magic-quotes
说明: 可让程序在执行时自动加入反斜线的引入字符。
打开调试器
语法: --enable-debugger
说明: 打开内建的 PHP 调试器。目前本功能还在实验阶段,尚未成熟。
取消路径 (discard path)
语法: --enable-discard-path
说明: 打开这个选项,**用户
**就不能透过浏览器读取 .htaccess 等和系统安全相关的文件。
高精确度数学函数
语法: --enable-bcmath
说明: 打开高精确度函数。必须要先安装本函数库,本选项方有效。
强制 CGI 重定向
语法: --enable-force-cgi-redirect
范 例: 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。例如用户读 http://my.host/cgi-bin/php/secret/doc.html 遇到比较了解 PHP 系统的黑客级用户可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关信息。若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。
不使用短的标记
语法: --disable-short-tags
说明: 配置本选项后,PHP 的程序就不能使用短的标记,一定要用的长标记。
引入远端档宁
语法: --enable-url-includes
说明: 配置本选项可让 PHP 程序可以引入 (include) 远端的 HTTP 或 FTP 服务器中的文件。
关闭语法效果
语法: --disable-syntax-hl
说明: 使用本选项会关闭 PHP 语法的彩色效果。
函数库路径
语法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR
说明: 若 PHP 在安全或编译所需的函数库在值得的路径,需要加入本选项,LDFLAGS 表示函数库的路径,CPPFLAGS 表示标头文件的路径。
范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure


  • 配置项代码

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php  
--enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg 
--enable-sysvsem  --enable-sysvshm --enable-shmop --enable-zip 
--enable-ftp --enable-soap --enable-xml --enable-mbstring --disable-rpath 
--disable-debug --disable-fileinfo --with-mysql=mysqlnd 
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pcre-regex 
--with-iconv --with-zlib --with-gd --with-openssl --with-xmlrpc 
--with-curl --with-imap-ssl --with-freetype-dir --enable-fpm 
--enable-pcntl --with-mcrypt --with-mhash

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-Kompilierungs- und Installationsprozesses sowie der Konfiguration der einzelnen Kompilierungsparameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn