PHP基礎(chǔ)參考01-安裝與配置


php

其實php的編譯很簡單:

  • 獲取并解壓 PHP 源代碼

    tar zxf php-x.x.x
    
  • 配置并構(gòu)建PHP

    cd ../php-x.x.x
    ./configure --enable-fpm --with-mysql
    make
    sudo make install
    

    需要配置安裝更多php擴(kuò)展,可以通過configure --help 查看

  • 創(chuàng)建配置文件,并將其復(fù)制到正確的位置

    cp php.ini-development /usr/local/php/php.ini
    cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
    cp sapi/fpm/php-fpm /usr/local/bin
    

    配置文件根據(jù)實際情況,有所出入,大概意思明白即可。

nginx

PHP: Unix 系統(tǒng)下的 Nginx 1.4.x - Manual

需要著重提醒的是,如果文件不存在,則阻止 Nginx 將請求發(fā)送到后端的 PHP-FPM 模塊, 以避免遭受惡意腳本注入的攻擊。

將 php.ini 文件中的配置項 cgi.fix_pathinfo 設(shè)置為 0 。php7.1中默認(rèn)值是1。

windows

Windows 下使用 Apache 安裝 PHP 應(yīng)用程序:XAMPP、WampServer 和 BitNami。

FPM

PHP: FastCGI 進(jìn)程管理器(FPM) - Manual

官方php-fpm配置中文版:PHP-FPM配置 - Manual

FPM(FastCGI進(jìn)程管理器)提供的函數(shù)fastcgi_finish_request()具有特殊功能:用于在請求完成和刷新數(shù)據(jù)后,繼續(xù)在后臺執(zhí)行耗時的工作(錄入視頻轉(zhuǎn)換、統(tǒng)計處理等);后續(xù)函數(shù)章節(jié)細(xì)講。

PECL擴(kuò)展庫安裝

要使用共享擴(kuò)展庫,必須經(jīng)過編譯,安裝,然后加載。

  • 下載pecl擴(kuò)展庫

    • pecl install extname 命令會自動下載擴(kuò)展代碼,所以在這種情況下不需要再次下載。
    • https://pecl.php.net/ PECL 網(wǎng)站包括有 PHP 開發(fā)組提供的不同擴(kuò)展庫的信息。這里的信息包括:更新記錄,版本說明,需求,以及其它信息。
  • pear編譯pecl擴(kuò)展庫

    $ pecl install extname
    

    這將下載 extname 的源代碼,編譯之,并將 extname.so 安裝到 extension_dir 中。然后 extname.so 就可以通過 php.ini 加載了。

    extension_dir可以通過php-config命令查看(下面會提到),比如:

        --extension-dir     [/usr/lib/php/20160303]
    
  • phpize 編譯pecl擴(kuò)展庫

    phpize 命令是用來準(zhǔn)備 PHP 擴(kuò)展庫的編譯環(huán)境的。下面例子中,擴(kuò)展庫的源程序位于 extname 目錄中:

    $ cd extname
    $ phpize
    $ ./configure
    $ make
    # make install
    

    成功的安裝將創(chuàng)建 extname.so 并放置于 PHP 的擴(kuò)展庫目錄中。需要調(diào)整 php.ini,加入 extension=extname.so 這一行之后才能使用此擴(kuò)展庫。

php-config

php-config 是一個簡單的命令行腳本用于獲取所安裝的 PHP 配置的信息。

jm@ubuntu:~$ php-config -h
Usage: /usr/bin/php-config [OPTION]
Options:
--prefix            [/usr]
...
--extension-dir     [/usr/lib/php/20160303]
--include-dir       [/usr/include/php/20160303]
--man-dir           [/usr/share/man]
--php-binary        [/usr/bin/php7.1]
--php-sapis         [apache2handler cgi cli fpm ]
--phpapi            [20160303]
...

運行時配置php.ini

配置文件(php.ini)在 PHP 啟動時被讀取。對于服務(wù)器模塊版本的 PHP,僅在 web 服務(wù)器啟動時讀取一次。對于 CGI 和 CLI 版本,每次調(diào)用都會讀取。

.user.ini

自 PHP 5.3.0 起,PHP 支持基于每個目錄的 INI 文件配置。此類文件 僅被 CGI/FastCGI SAPI 處理。如果你的 PHP 以模塊化運行在 Apache 里,則用 .htaccess 文件有同樣效果。

除了主 php.ini 之外,PHP 還會在每個目錄下掃描 INI 文件,從被執(zhí)行的 PHP 文件所在目錄開始一直上升到 web 根目錄($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被執(zhí)行的 PHP 文件在 web 根目錄之外,則只掃描該目錄。

在php.ini中配置.user.ini文件:

  • user_ini.filename 設(shè)定了 PHP 會在每個目錄下搜尋的文件名;如果設(shè)定為空字符串則 PHP 不會搜尋。默認(rèn)值是 .user.ini。

  • user_ini.cache_ttl 控制著重新讀取用戶 INI 文件的間隔時間。默認(rèn)是 300 秒(5 分鐘)。

配置生效范圍

模式 含義
PHP_INI_USER 可在用戶腳本(例如 ini_set())或 Windows 注冊表 (自 PHP 5.3 起)以及 .user.ini 中設(shè)定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中設(shè)定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中設(shè)定
PHP_INI_ALL 可在任何地方設(shè)定

例如 output_buffering 指令是屬于 PHP_INI_PERDIR,因而就不能用 ini_set() 來設(shè)定。但是 display_errors 指令是屬于 PHP_INI_ALL 因而就可以在任何地方被設(shè)定,包括 ini_set()。

注:ini_set()就是可以在用戶腳本中修改配置。

修改配置

修改配置的方式:

  • httpd.conf
  • .htaccess
  • windows修改注冊表
  • ini_set函數(shù)

注:ini_set并不能修改所有配置

哪些指令配置可以在當(dāng)前模式下修改詳見:PHP: php.ini 配置選項列表 - Manual

比如upload_max_filesize只能在PHP_INI_PERDIR模式下修改,也就是只有php.ini、httpd.conf、.htaccess配置文件中才能修改生效。

來源:PHP基礎(chǔ)參考01-安裝與配置 - 9ong

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

推薦閱讀更多精彩內(nèi)容