使用 macOS Monterey 之前內(nèi)置的 PHP

PHP 從 macOS X(10.0.0)開始,到 macOS Monterey(12.0.0)之前內(nèi)置到系統(tǒng)中。在默認(rèn)的 web 服務(wù)器中啟用 PHP,只需將 Apache 配置文件 httpd.conf 中的幾行配置指令最前面的注釋符號(hào)去掉,而 CGICLI 默認(rèn)都可使用(可以很容易的被終端程序使用)。

按照以下的使用說明,可以快速的建立一個(gè)本地 PHP 開發(fā)環(huán)境。強(qiáng)烈建議將 PHP 升級(jí)到最新的版本。在大多數(shù)活躍的軟件中, 新的版本會(huì)修復(fù)錯(cuò)誤和添加新的功能,PHP 也是如此。請(qǐng)參見相應(yīng)的 macOS 安裝文檔,以進(jìn)一步了解詳細(xì)的信息。以下的說明以初學(xué)者的角度來詳細(xì)描述如何操作來得到一個(gè)缺省的運(yùn)行環(huán)境。建議所有的用戶都編譯或者安裝一個(gè)新的打包版本。

標(biāo)準(zhǔn)的安裝類型為 mod_php,在 macOS 的 Apache web 服務(wù)器(默認(rèn) web 服務(wù)器,可以從系統(tǒng)設(shè)置中訪問)中啟用 PHP 包含以下的步驟:

  1. 找到并打開Apache的配置文件。默認(rèn)情況下,這個(gè)配置文件的位置是: /private/etc/apache2/httpd.conf 使用 Finder 或者 Spotlight 來找到這個(gè)文件可能不是很容易的事情,因?yàn)樵谀J(rèn)情況下它一般是 root 用戶擁有所有權(quán)的私有文件。

    注意: 要打開這個(gè)文件,可以在命令行下面使用基于 Unix 的文本編輯器,例如 nano,因?yàn)樗膶僦魇?root,所以我們需要使用 sudo 來打開(以 root 用戶權(quán)限)。例如我們?cè)? Terminal 程序中敲入下面的指令(操作后,會(huì)提示輸入密碼):sudo nano /private/etc/apache2/httpd.conf 注意 nano 中的命令:^w(搜索),^o(保存),以及 ^x(退出)。^ 表示 Ctrl 鍵。

    注意: 在 Mac OS X 10.5之前的版本中捆綁的是舊版本的 PHP 和 Apache。因此在舊的計(jì)算機(jī)中 Apache 配置文件的位置可能是 /etc/httpd/httpd.conf。

  2. 使用文本的編輯器取消注釋(刪除前面的 #)看起來類似于下面的行(這兩行常常不在一起,需要在文件中找到這兩行):

    # LoadModule php5_module libexec/httpd/libphp5.so
    
    # AddModule mod_php5.c
    
    注意位置/路徑。如果在以后重新編譯了 PHP,以上文件應(yīng)被更換或者注釋掉。

  3. 確保將所需要的文件擴(kuò)展名解析為 PHP(例如:.php .html 以及 .inc),否則不能正常運(yùn)行。

    由于以下的配置已經(jīng)寫入 httpd.conf(自 Mac Panther 版起),一旦 PHP 被啟用則 .php 文件會(huì)被自動(dòng)解析為 PHP 腳本。

    <IfModule mod_php5.c>
        # If php is turned on, we respect .php and .phps files.
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        # Since most users will want index.php to work we
        # also automatically enable index.php
        <IfModule mod_dir.c>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    

    注意:

    在 Mac OS X 10.5(Leopard)以前版本中,捆綁的是 PHP 4 而不是 PHP 5,因此上面的配置指令稍有不同,需要將 5 更改為 4。

  4. 確保 DirectoryIndex 加載了所需的默認(rèn)索引文件。 這個(gè)也是在 httpd.conf 中設(shè)置的。 通常情況下使用 index.phpindex.html 。默認(rèn)情況下 index.php 會(huì)被啟用,因?yàn)樵谖覀兩厦娴呐渲弥噶钪袑懨髁恕8鶕?jù)實(shí)際情況可以做相應(yīng)的調(diào)整。
  5. 設(shè)置 php.ini 的位置或者使用默認(rèn)的位置。 macOS 上通常默認(rèn)的位置是 /usr/local/php/php.ini ,調(diào)用 phpinfo() 也可以得到此信息。如果沒有使用 php.ini,PHP 將使用所有的默認(rèn)值。參見常見問題中的尋找 php.ini。
  6. 定位或者設(shè)置 DocumentRoot。 這是網(wǎng)站所有文件的根目錄。此目錄中的文件由 web 服務(wù)器提供服務(wù),從而使得 PHP 文件將在輸出到瀏覽器之前解析為 PHP 腳本。通常情況下默認(rèn)的路徑是 /Library/WebServer/Documents,但是可以根據(jù)需要在 httpd.conf中設(shè)置為任何其他目錄。另外,用戶自己的缺省 DocumentRoot/Users/yourusername/Sites
  7. 創(chuàng)建一個(gè) phpinfo() 文件。

    phpinfo() 將會(huì)顯示PHP的相關(guān)系統(tǒng)信息??梢栽? DocumentRoot 下創(chuàng)建一個(gè) PHP 文件,其代碼如下:

    <?php phpinfo(); ?>

  8. 重啟 Apache,然后從瀏覽器訪問上面創(chuàng)建的文件。

    要重啟Apache,可以在 shell 中執(zhí)行 sudo apachectl graceful,也可以停止/啟動(dòng) macOS 系統(tǒng)首選項(xiàng)中的“Personal Web Server”選項(xiàng)。默認(rèn)情況下,從瀏覽器訪問本地文件的 URL 一般類似于:http://localhost/info.php,或者使用:http://localhost/~yourusername/info.php 來訪問用戶自己 DocumentRoot 中的文件。

CLI(或者舊版本中的 CGI)一般文件名為 php ,其路徑可能是 /usr/bin/php。打開一個(gè)終端,參考 PHP 手冊(cè)中的 PHP 的命令行模式一章,然后執(zhí)行 php -v 可以檢查當(dāng)前運(yùn)行的 PHP 的版本。調(diào)用 phpinfo() 也會(huì)顯示相關(guān)的信息。