2024 年日本 PHP 研討會

在 macOS Monterey 之前的版本使用內建 PHP

從 macOS X (10.0.0) 到 macOS Monterey (12.0.0) 之前的 macOS 版本都內建 PHP。要在預設網路伺服器中啟用 PHP,需要取消 Apache 設定檔 httpd.conf 中幾行的註釋,而 CGI 和/或 CLI 預設為啟用狀態(可透過終端機程式輕鬆存取)。

以下啟用 PHP 的說明旨在快速設定本地開發環境。強烈建議務必將 PHP 升級到最新版本。如同大多數線上軟體一樣,較新版本旨在修復錯誤並新增功能,PHP 也不例外。詳情請參閱 macOS 安裝說明文件。以下說明針對初學者,提供讓預設設定運作的詳細資訊。鼓勵所有使用者編譯或安裝新的套件版本。

標準安裝類型是使用 mod_php,在 macOS 上為 Apache 網頁伺服器(預設網頁伺服器,可透過「系統偏好設定」存取)啟用內建的 mod_php 牽涉到以下步驟

  1. 找到並開啟 Apache 設定檔。預設位置如下: /private/etc/apache2/httpd.conf 使用 FinderSpotlight 尋找這個檔案可能會很困難,因為預設情況下它是私有的,且由 root 使用者所擁有。

    注意 開啟這個檔案的一種方法是在終端機中使用基於 Unix 的文字編輯器,例如 nano,由於該檔案屬於 root 使用者,我們將使用 sudo 命令以 root 身分開啟它,例如在「終端機」應用程式中輸入以下內容(之後會提示輸入密碼): sudo nano /private/etc/apache2/httpd.conf 常用的 nano 命令: ^w(搜尋)、^o(儲存)和 ^x(退出),其中 ^ 代表 Ctrl 鍵。

    注意 10.5 之前的 Mac OS X 版本內建了舊版的 PHP 和 Apache。因此,舊版機器上的 Apache 設定檔可能是 /etc/httpd/httpd.conf

  2. 使用文字編輯器,取消註解類似以下的行(移除 #)(這兩行通常不在一起,在檔案中找到它們)

    # LoadModule php5_module libexec/httpd/libphp5.so
    
    # AddModule mod_php5.c
    
    請注意位置/路徑。將來建置 PHP 時,應替換或註解掉上述檔案。

  3. 確保所需的副檔名會被解析為 PHP(例如: .php.html.inc)。

    由於 httpd.conf 中已存在以下陳述式(從 Mac Panther 開始),一旦啟用 PHP,.php 檔案就會自動解析為 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 載入所需的預設索引檔 這也在 httpd.conf 中設定。通常使用 index.phpindex.html。預設情況下會啟用 index.php,因為它也在上面顯示的 PHP 檢查中。請據此調整。
  5. 設定 php.ini 的位置或使用預設位置 macOS 上的典型預設位置是 /usr/local/php/php.ini,呼叫 phpinfo() 將會顯示此資訊。如果沒有使用 php.ini,PHP 將使用所有預設值。另請參閱關於尋找 php.ini 的相關常見問題。
  6. 找到或設定 DocumentRoot 這是所有網頁檔案的根目錄。此目錄中的檔案由網頁伺服器提供,因此 PHP 檔案會在輸出到瀏覽器之前先被解析為 PHP。典型的預設路徑是 /Library/WebServer/Documents,但可以在 httpd.conf 中設定為任何路徑。或者,個別使用者的預設 DocumentRoot/Users/yourusername/Sites
  7. 建立一個 phpinfo() 檔案

    phpinfo() 函式會顯示關於 PHP 的資訊。請考慮在 DocumentRoot 中建立一個包含以下 PHP 程式碼的檔案

    <?php phpinfo(); ?>

  8. 重新啟動 Apache,並載入上面建立的 PHP 檔案

    要重新啟動,請在終端機中執行 sudo apachectl graceful 或在 macOS 系統偏好設定中停止/啟動「個人網頁伺服器」選項。預設情況下,在瀏覽器中載入本地檔案的 URL 如下:https://127.0.0.1/info.php 或者使用使用者目錄中的 DocumentRoot 是另一個選項,最終看起來像這樣:https://127.0.0.1/~yourusername/info.php

CLI(或舊版本中的 CGI)被適當地命名為 php,且可能存在於 /usr/bin/php。開啟終端機,閱讀 PHP 手冊的命令列章節,並執行 php -v 來檢查這個 PHP 二進位檔的 PHP 版本。呼叫 phpinfo() 也會顯示此資訊。

新增註解

使用者貢獻的註解 2 則註解

匿名
16 年前
您只需要取消註解
#LoadModule php5_module libexec/apache2/libphp5.so

這個已經沒了
# AddModule mod_php5.c

第 3 項的敘述已更改為
<IfModule mime_module>
#
# TypesConfig 指向包含從
# 副檔名到 MIME 類型的映射列表的檔案。
#
TypesConfig /private/etc/apache2/mime.types

#
# AddType 允許您新增或覆寫 MIME 設定
# TypesConfig 中指定的特定檔案類型的檔案。
#
#AddType application/x-gzip .tgz
#
# AddEncoding 允許您讓某些瀏覽器即時解壓縮
# 資訊。注意:並非所有瀏覽器都支援此功能。
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# 如果上面的 AddEncoding 指令被註解掉,那麼您
# 可能應該定義這些副檔名以指示媒體類型
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

#
# AddHandler 允許您將某些副檔名映射到「處理程式」
# 與檔案類型無關的動作。這些動作可以內建於伺服器中
# 或使用 Action 指令新增(見下文)
#
# 若要在 ScriptAliased 目錄之外使用 CGI 指令碼
#(您還需要將「ExecCGI」新增到「Options」指令中。)
#
#AddHandler cgi-script .cgi

# 適用於類型映射(協商資源)
#AddHandler type-map var

#
# 篩選器允許您在內容發送至客戶端之前進行處理。
#
# 解析 .shtml 檔案以取得伺服器端包含 (SSI)
# (您還需要在「Options」指令中加入「Includes」。)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>

額外的 MIME 類型可以加入 /private/etc/apache2/mime.types 檔案,或者使用上面提到的 AddType 指令。
10086 at xiaoi dot me
5 年前
在 macOS 10.12.6 上設定 Apache + PHP 環境

步驟 1:使用 apachectl 啟動 httpd
> sudo apachectl start

步驟 2:找到 httpd.conf
> sudo apachectl -t -D DUMP_INCLUDES

步驟 3:編輯設定檔,例如:/opt/local/etc/apache2/httpd.conf
> sudo vim /opt/local/etc/apache2/httpd.conf

步驟 4:在 <IfModule unixd_module> 之前載入 php 模組,例如:
```
LoadModule php5_module /usr/libexec/apache2/libphp5.so
<IfModule unixd_module>
```

步驟 5:在 httpd.conf 的結尾加入 mod_php5.c
```
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
```

步驟 6:儲存並離開
步驟 7:重新啟動 httpd
> sudo apachectl restart

步驟 8:撰寫 demo.php,測試設定
```
<?php
phpinfo
();
?>


步驟 9:將 demo.php 複製到「DocumentRoot」,您可以在 httpd.conf 中找到它

步驟 10:瀏覽 demo.php

完成。
To Top