久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      PHP基礎及安裝過程

      PHP:Hypertext Preprocessor超文本預處理器的縮寫,是一種被廣泛應用的開發(fā)源代碼的多用途腳本語言,它可以嵌套在HTML中,尤其是web開發(fā)。

      PHP代碼塊被包含在特殊的起始符和結(jié)束符中的。

      PHP功能:

      1.服務端腳本是其主要領域,具有這項工作需要PHP解析器(CGI或服務器模塊)、web服務器、web瀏覽器支持。
      2.命令行腳本,編寫一段php腳本,不需要任何服務器和瀏覽器來運行它,僅僅需要php解析器來執(zhí)行。

      3.應用程序,通過PHP-GTK來編寫。

      今天是搭建php來為今后的LNMP做個準備,所以我們的用途是web。

      一些基本概念~

      CGI:通用網(wǎng)關接口,為http服務器和其他機器上的程序服務通信交流的一種工具,CGI需要運行在網(wǎng)絡服務器上。

      傳統(tǒng)CGI缺點:性能差,每次HTTP服務器遇到動態(tài)程序時都需要通過重新啟動解析器來執(zhí)行解析,之后結(jié)果才會被返回給HTTP服務器,這在處理高并發(fā)訪問時幾乎是不可用的。

      FastCGI:是一個可伸縮、高速的HTTP服務器和動態(tài)腳本語言之間通信的接口,在unxi下是FastCGI的接口是socket,主要優(yōu)點是將動態(tài)語言和HTTP服務器分離出來。流行的HTTP服務器都支持FastCGI。

      FastCGI接口采用C/S結(jié)構(gòu)。當http服務器遇到動態(tài)程序時,直接交付給FastCGI進程來執(zhí)行,結(jié)果返回給瀏覽器,HTTP服務器可以專一的處理靜態(tài)請求、將動態(tài)腳本服務器的結(jié)果返回給客戶端,提升整體新能。

      FPM:FastCGI進程管理器,對高負載網(wǎng)站有很大幫助。功能有:支持平滑停止/啟動、可以工作于不同的 uid/gid/chroot 環(huán)境下,并監(jiān)聽不同的端口和使用不同的 php.ini 配置文件、

      stdout 和 stderr 日志記錄、在發(fā)生意外情況的時候能夠重新啟動并緩存被破壞的 opcode、支持文件上傳優(yōu)化、慢日志、fastcgi_finish_request()- 特殊功能:用于在請求完成和刷新數(shù)據(jù)后,繼續(xù)在后臺執(zhí)行耗時的工作(錄入視頻轉(zhuǎn)換、統(tǒng)計處理等)、動態(tài)/靜態(tài)子進程產(chǎn)生、基本 SAPI 運行狀態(tài)信息(類似Apache的 mod_status)、基于 php.ini 的配置文件。

      連接器(Connector):在mysql文檔中指出,連接器是允許應用程序連接到MySQL服務器的一個軟件,mysql提供了多數(shù)語言的連接器,包括php。

      應用程序與數(shù)據(jù)庫通信,需要編寫php代碼執(zhí)行連接數(shù)據(jù)服務器、查詢數(shù)據(jù)庫、與數(shù)據(jù)庫相關的其他活動,需要軟件來提供php應用程序使用api。此軟件稱為連接器,允許應用程序連接到數(shù)據(jù)庫服務器。

      Driver:驅(qū)動是一段設計用來于一種特定類型的數(shù)據(jù)庫服務器進行交互的軟件代碼。驅(qū)動可能會調(diào)用一些庫,比如MySQL客戶端庫或者MySQL Native驅(qū)動庫。 這些庫實現(xiàn)了用于和MySQL數(shù)據(jù)庫服務器進行交互的底層協(xié)議。

      擴展:在php文檔中指出php代碼由核心組成,具有核心功能的可選擴展。php的MySQL擴展是使用php擴展框架實現(xiàn)的。擴展通常會向程序員公開api以允許編程方式使用工具或者不公開api。

      API:應用程序變編程接口或API定義應用程序需要調(diào)用的類、方法、函數(shù)和變量,以執(zhí)行所需要的任務。對于需要與數(shù)據(jù)庫通信的php應用程序,必要的API通常通過PHP擴展來實現(xiàn)。

      API可以是程序性的或者面向?qū)ο蟮?。使用過程api可以調(diào)用函數(shù)來執(zhí)行任務,使用面向?qū)ο骯pi可以通過api實例化類,然后在結(jié)果對象上調(diào)用方法。

      在編寫需要連接到MySQL服務器的PHP應用程序時,有3個api選項(擴展)可用:

      1.php的mysql擴展:允許開發(fā)與mysql數(shù)據(jù)庫交互的PHP應用程序,僅適用于mysql4.3.1以下版本,此擴展提供一個過程api;

      通常擴展位于源碼包路徑下/ext/mysql中。(ext表示Extended file system 延伸文件系統(tǒng),簡稱ext)。

      2.php的mysqli擴展:mysql的更新改進擴展,允許我們訪問MySQL 4.1及以上版本提供的功能,此擴展包含在php5以上版本,此mysqli擴展改進 面向?qū)ο蟮腶pi、支持多語句、增強調(diào)試功能等等。

      通常擴展位于源碼包路徑下/ext/mysqli中。

      3.php的數(shù)據(jù)對象pdo:pdo:PHP Data Objects簡寫,用于php應用程序的數(shù)據(jù)庫抽象層。無論應用程序連接到哪種類型的數(shù)據(jù)庫,pdo都會將php應用程序提供一致的api。

      通常擴展位于源碼包路徑下/ext/pdo中。

      驅(qū)動程序:

      pdo_mysql 驅(qū)動程序:pdo_mysql是一個實現(xiàn)PHP數(shù)據(jù)對象(PDO)接口的驅(qū)動程序,用于實現(xiàn)從PHP到MySQL數(shù)據(jù)庫的訪問。

      mysqlnd驅(qū)動程序:為了與mysql服務器通信,mysqli和pdo_mysql各自使用一個實現(xiàn)所需協(xié)議的庫。過去唯一使用的庫是mysql客戶端庫稱為libmysqlclient。libmysqlclient未針對php應用程序的通信做優(yōu)化,故而mysqlnd(mysql native本機本地 driver)被開發(fā)。MySQL Native Driver是使用PHP擴展框架實現(xiàn)的,位于源碼包路徑下ext/mysqlnd。它不會向PHP程序員公開API。只能與MySQL服務器版本4.1.3及更高版本一起使用。

      mysqlnd不提供api,提供api的是擴展(mysqli和pdo),這些擴展使mysqlnd和mysql server進行通信。

      mysqli擴展是在PHP 5.0.0版本中引入的。mysqlnd驅(qū)動程序包含在PHP 5.3.0版中。

      從應用的層面(上層)來看,通過php的mysql和mysqli擴展提供的API去操作數(shù)據(jù)庫;

      從底層來看,mysqlnd提供了底層和數(shù)據(jù)庫交互的支持(和mysql數(shù)據(jù)庫進行網(wǎng)絡協(xié)議交互);

      在linux上安裝:

      通常安裝php使用二進制版本安裝,這些二進制版本是在支持mysql擴展下構(gòu)建的,但擴展庫需要附加軟件包進行安裝。

      從源代碼構(gòu)建PHP可以指定要使用的MySQL擴展,以及為每個擴展選擇客戶端庫。mysqlnd驅(qū)動程序是推薦的客戶端庫,因為它可以提高性能并允許訪問使用MySQL客戶端庫時不可用的功能。

      PHP5.4以上版本默認的客戶端庫使用mysqlnd、選項配置–with-mysqli 。

      擴展和客戶端庫可自由組合使用。如下:

      ./configure

      –with-mysql=mysqlnd #使用mysql擴展并使用mysqlnd官方驅(qū)動程序

      –with-mysqli=mysqlnd #使用mysqli擴展并使用mysqlnd官方驅(qū)動程序

      –with-pdo-mysql=mysqlnd #使用pdo擴展并使用mysqlnd官方驅(qū)動程序

      安裝FastCGI,在編譯安裝php時加入 –enable-fpm配置選項來激活FPM支持。

      1.需要先檢查是否安裝nginx和mysql

      [root@WebA-136 ~]# netstat -anlutp | egrep "mysql|nginx"

      tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4547/nginx

      tcp 0 0 :::3306 :::* LISTEN 5891/mysqld

      [root@WebA-136 ~]#

      2.檢查依賴庫,檢查后linux只默認安裝了zlib-devel庫,記得安裝以下包哦~

      [root@WebA-136 ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

      zlib-devel-1.2.3-29.el6.x86_64

      [root@WebA-136 ~]#

      居然yum源里沒有l(wèi)ibiconv-devel庫,需要手動安裝

      [root@WebA-136 ~]#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz

      [root@WebA-136 ~]# tar xf libiconv-1.15.tar.gz -C /usr/local/src/

      [root@WebA-136 libiconv-1.15]# mkdir /usr/local/libiconv

      [root@WebA-136 libiconv-1.15]# ./configure –prefix=/usr/local/libiconv

      [root@WebA-136 libiconv-1.15]# make && make install

      3.安裝epel源和libmcrypt庫(對程序運行時添加/移除算法有幫助)、mhash庫

      [root@WebA-136 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyum.com/repo/epel-6.repo

      [root@WebA-136 ~]# yum install libmcrypt-devel mhash -y

      4.安裝mcrypt加密擴展庫

        [root@WebA-136~]#yuminstallmcrypt-y  

      5.執(zhí)行./configure,一定要加入-enable-fpm配置選項來激活FPM支持的

      ./configure

      –prefix=/usr/local/php7.2.5 #安裝位置

      –enable-mysqlnd #使用mysqlnd

      –with-mysqli=mysqlnd #使用mysqli擴展并使用mysqlnd官方驅(qū)動程序

      –with-pdo-mysql=mysqlnd #使用pdo mysql擴展并使用mysqlnd官方驅(qū)動程序

      –with-iconv-dir=/usr/local/libiconv #使php支持iconv函數(shù),用于字符編碼強制轉(zhuǎn)換

      –with-freetype-dir #打開對freetype字體庫的支持

      –with-jpeg-dir #打開對jpeg圖片支持

      –with-png-dir #打開對png圖片支持

      –with-zlib #打開對zlib庫支持

      –with-libxml-dir #打開對libxml支持

      –enable-xml #支持xml擴展

      –disable-rpath #關閉額外的運行庫文件

      –enable-bcmath #使用bcmath擴展,打開圖片大小調(diào)整,在zabbix監(jiān)控會用到

      –enable-shmop

      –enable-sysvsem

      –enable-inline-optimization

      –with-curl #打開對curl工具的支持

      –enable-mbregex

      –enable-fpm #打上PHP-fpm 補丁后才有這個參數(shù),CGI方式安裝的啟動程序

      –enable-mbstring #多字節(jié)支持

      –with-mcrypt=/usr/local/mcrypt #php7.2.5已廢棄此選項

      –with-gd #對gd庫的支持

      –enable-gd-native-ttf #php7.2.5已廢棄此選項

      –with-openssl #對openssl的支持

      –with-mhash #算法支持

      –enable-pcntl # freeTDS需要用到的,可能是鏈接mysql用到

      –enable-sockets #打開socket的支持

      –with-xmlrpc #打開xml-rpc的c語言

      –enable-soap

      –enable-short-tags

      –enable-static

      –with-xsl #打開XSLT 文件支持,擴展了libXML2庫 ,需要libxslt軟件

      –with-fpm-user=www #運行fpm的用戶

      –with-fpm-group=www #運行fpm的組名

      –enable-ftp #打開ftp的支持

      –enable-opcache=no

      其中與fpm有關的選項是:

      –enable-fpm

      –with-fpm-user=www 設置 FPM 運行的用戶身份(默認nobody)

      –with-fpm-group=www 設置 FPM 運行時的用戶組(默認nobody)

      –with-fpm-systemd 啟用 systemd 集成 (默認no)

      –with-fpm-acl 使用POSIX訪問控制列表 (默認no)

      編譯前需要做link

      [root@WebA-136 php-7.2.5]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

      [root@WebA-136 php-7.2.5]# touch ext/phar/phar.phar

      [root@WebA-136 php-7.2.5]# make && make install

      拷貝php.ini配置文件

      [root@WebA-136 php]# cp /usr/local/src/php-7.2.5/php.ini-production /usr/local/php/lib/php.ini

      [root@WebA-136 php]# cd /usr/local/php/etc/php-fpm.d

      [root@WebA-136 php-fpm.d]# cp www.conf.default www.conf

      [root@WebA-136 ~]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

      啟動php并查看

      [root@iZ2ze4vbp6wu2etcksvay7Z php]# ./sbin/php-fpm

      [root@iZ2ze4vbp6wu2etcksvay7Z php]# lsof -i :9000

      COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

      php-fpm 7677 root 7u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)

      php-fpm 7678 www 0u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)

      php-fpm 7679 www 0u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)

      [root@iZ2ze4vbp6wu2etcksvay7Z php]# netstat -anltup | grep php

      tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 7677/php-fpm

      [root@iZ2ze4vbp6wu2etcksvay7Z php]#

      我安裝的是php7.2.5版本、linux是阿里云的服務器、nginx是1.14.2、mysql是5.6.40,過程中所遇到的問題如下:

      1.virtual memory exhausted: Cannot allocate memory,虛擬內(nèi)存用盡無法分配內(nèi)存。

      查看內(nèi)存情況如下:

        [root@iZ2ze4vbp6wu2etcksvay7Zphp]#free-m  totalusedfreesharedbufferscached  Mem:996895100053299  -/+buffers/cache:542453  Swap:000  [root@iZ2ze4vbp6wu2etcksvay7Zphp]#

      解決方法:

        [root@iZ2ze4vbp6wu2etcksvay7Zphp]#ddif=/dev/zeroof=/opt/swapbs=1024count=2048000  [root@iZ2ze4vbp6wu2etcksvay7Zphp]#mkswap/opt/swap  [root@iZ2ze4vbp6wu2etcksvay7Zphp]#swapon/opt/swap  安裝完php后執(zhí)行  [root@iZ2ze4vbp6wu2etcksvay7Zphp]#swapoff/opt/swap  

      phpize的用法:手動編譯安裝php的擴展

      增加pdo擴展(我的已經(jīng)在安裝php的時候已經(jīng)增加此擴展了)

      首先進去源碼包pdo目錄下

        [root@iZ2ze4vbp6wu2etcksvay7Z ~]# cd /usr/local/src/php-7.2.5/ext/pdo  

      其次執(zhí)行/usr/local/php/bin/phpize生成配置文件

        [root@iZ2ze4vbp6wu2etcksvay7Zpdo]#/usr/local/php/bin/phpize  Configuringfor:  PHPApiVersion:20170718  ZendModuleApiNo:20170718  ZendExtensionApiNo:320170718  [root@iZ2ze4vbp6wu2etcksvay7Zpdo]#  

      再使用生成的配置文件./configure –with-php-config=/usr/local/php/bin/php-config –enable-pdo=share

        [root@iZ2ze4vbp6wu2etcksvay7Zpdo]#./configure--with-php-config=/usr/local/php/bin/php-config--enable-pdo=share  

      最后執(zhí)行make &&make install編譯安裝

        [root@iZ2ze4vbp6wu2etcksvay7Zpdo]#make&&makeinstall  

      成功則出現(xiàn)

      Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

      Installing header files: /usr/local/php/include/php/

      Installing PDO headers: /usr/local/php/include/php/ext/pdo/

      說明在/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/目錄下生成了pdo.so文件.

      增加pdo_mayslq((我的已經(jīng)在安裝php的時候已經(jīng)增加此擴展了)),進入源碼包pdo_mysql目錄下,執(zhí)行/usr/local/php/bin/phpize生成配置文件

        [root@iZ2ze4vbp6wu2etcksvay7Zext]#cdpdo_mysql/  [root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#/usr/local/php/bin/phpize  

      再使用生成的配置文件–with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

        [root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#./configure–with-php-config=/usr/local/php/bin/php-config–with-pdo-mysql=/usr/local/mysql  

      最后make &&make install編譯安裝

        [root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#make&&makeinstall  

      成功則出現(xiàn)

      Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

      至此在此目錄下已分別生成pdo.so文件和pdo_mysql.so文件.

      最后切換到php安裝目錄下找到php.ini配置文件

        [root@iZ2ze4vbp6wu2etcksvay7Z pdo_mysql]# vim /usr/local/php/lib/php.ini  增加兩行:  extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/  extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/pdo.so  

      需要重啟php-fpm生效

      FPM配置文件有php-fpm.conf和進程池配置文件兩個。

        [root@WebA-136php]#vimetc/php-fpm.conf  有全局配置段和線程池配置段兩部分組成。  

      全局配置部分:

      pid = string PID文件的位置。默認為空
      error_log = string 錯誤日志的位置。默認:#INSTALL_PREFIX#/log/php-fpm.log。 如果設置為 "syslog",日志將不會寫入本地文件,而是發(fā)送到 syslogd。
      log_level = string 錯誤級別。可用級別為:alert(必須立即處理),error(錯誤情況),warning(警告情況),notice(一般重要信息),debug(調(diào)試信息)。默認:notice。
      syslog.facility = string 設置何種程序記錄消息,默認值:daemon
      syslog.ident = string

      為每條信息添加前綴。 如果在同一臺服務器上運行了多個 FPM 實例,可以修改此默認值來滿足需求。默認值:php-fpm。

      emergency_restart_threshold =int

      如果子進程在 emergency_restart_interval 設定的時間內(nèi)收到該參數(shù)設定次數(shù)的 SIGSEGV 或者 SIGBUS退出信息號,則FPM會重新啟動。0 表示“關閉該功能”。默認值:0(關閉)。

      emergency_restart_interval =mixed

      emergency_restart_interval 用于設定平滑重啟的間隔時間。這么做有助于解決加速器中共享內(nèi)存的使用問題??捎脝挝唬簊(秒),m(分),h(小時)或者 d(天)。默認單位:s(秒)。默認值:0(關閉)。

      process_control_timeout =mixed

      daemonize =boolean 設置 FPM 在后臺運行。設置“no”將 FPM 保持在前臺運行用于調(diào)試。默認值:yes。

      process.max =int Fork的最大FPM進程數(shù)。使用動態(tài)管理進程數(shù)時,此設計可以控制在一個進程池內(nèi)的全局進程數(shù)量。使用需謹慎,默認值:0。
      process.priority =int 設置master進程的 nice(2) 優(yōu)先級(如果設置了此值)。 可以是 -19(最高優(yōu)先級)到 20(更低優(yōu)先級)。默認值:不設置。
      daemonize =boolean 設置 FPM 在后臺運行。設置“no”將 FPM 保持在前臺運行用于調(diào)試。默認值:yes。
      rlimit_files =int 設置master進程的打開文件描述符rlimit數(shù)。
      rlimit_core =int 設置master進程最大core的rlimit尺寸,默認值0。
      events.mechanism =string 設置FPM使用的事件機制??捎靡韵逻x項:select、pool、epoll、kqueue (*BSD)、port (Solaris)。 默認值:不設置(自動檢測)
      systemd_interval =int 使用systemd集成的FPM時,設置間歇秒數(shù),報告健在通知給systemd。設置為0表示禁用。默認值10

      線程池配置部分http://php.net/manual/zh/install.fpm.configuration.php

      第一個php程序hello world。

        

      helloworld ';>

      在瀏覽器輸入day/hello.php

      PHP基礎及安裝過程

      此程序僅僅使用了php的echo語句顯示了hello world。

      繼續(xù)從php獲取系統(tǒng)信息,如下

          

      PHP基礎及安裝過程

      輸出正在使用的瀏覽器

        echo$_SERVER['HTTP_USER_AGENT'];  >  

      PHP基礎及安裝過程

      以及以下:

        if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')!==FALSE){  echo'正在使用InternetExplorer。  ';  }  >  

      PHP基礎及安裝過程

      處理表單略過咯~

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號