# 下載 PHP 5.2.1 Non Thread Safe (NTS) for Windows
# 解壓至 C:\php5
# 複製 php.ini-development 為 C:\Windows\php.ini
# 複製至 C:\Windows\System32\
php5ts.dll
libmysql.dll
# 擴展 DLL(按需)
php_gd2.dll
php_mysql.dll
php_mbstring.dll
; 擴展目錄
extension_dir = "C:/php5/ext"
; 啟用擴展
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dll
; 會話存儲
session.save_path = "C:/Windows/Temp"
; 短標籤(兼容舊代碼)
short_open_tag = On
; 開發環境顯示錯誤
display_errors = On
error_reporting = E_ALL
; 時區(解決 PHP 5.1+ 8小時偏移)
date.timezone = PRC
; 註冊全局變量(舊代碼兼容,新項目建議 Off)
register_globals = Off
# 1. 站點根目錄
DocumentRoot "C:/www"
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# 2. 默認文檔
DirectoryIndex index.html index.php
# 3. 載入 PHP 模塊(Apache 2.2)
LoadModule php5_module "C:/php5/php5apache2_2.dll"
# Apache 2.4 需對應 php5apache2_4.dll
# 4. PHP 處理器
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# 5. PHPIniDir(可選,指定 php.ini 位置)
PHPIniDir "C:/Windows"
# 建立測試文件 C:\www\phpinfo.php
<?php phpinfo(); ?>
# 瀏覽器訪問 https://localhost/phpinfo.php
# 應顯示 PHP Version、Loaded Configuration File、mysql、gd 等模塊
# 1. 依賴
yum install -y gcc libxml2-devel libjpeg-devel libpng-devel freetype-devel \
libicu-devel openldap-devel libzip-devel sqlite-devel oniguruma-devel
# 2. 下載源碼
wget https://www.php.net/distributions/php-8.2.10.tar.gz
tar xzf php-8.2.10.tar.gz && cd php-8.2.10
# 3. 配置編譯
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm --with-fpm-user=www --with-fpm-group=www \
--enable-mbstring --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem \
--enable-inline-optimization --enable-mbregex --enable-pcntl --enable-sockets \
--with-curl --with-zlib --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-gd --with-jpeg --with-freetype --with-zip --with-libxml
# 4. 編譯安裝
make -j$(nproc) && make install
# 5. 配置文件
cp php.ini-production /usr/local/php/etc/php.ini
cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/www.conf /usr/local/php/etc/php-fpm.d/www.conf
# /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name example.com;
root /data/www;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 或 unix:/tmp/php-fpm.sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 安全:禁止訪問隱藏文件
location ~ /\.(htaccess|git|svn) { deny all; }
}
}
# 1. 下載解壓至站點目錄
cd /data/www
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
unzip phpMyAdmin-5.2.1-all-languages.zip
mv phpMyAdmin-5.2.1-all-languages phpmyadmin
# 2. 配置
cd phpmyadmin
cp config.sample.inc.php config.inc.php
# 修改 config.inc.php
$cfg['blowfish_secret'] = 'your_32_chars_random_string'; # cookie 加密密鑰
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'your_mysql_password';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['DefaultLang'] = 'zh_CN';
$cfg['DefaultCharset'] = 'utf-8';
# 3. Nginx 限制訪問(建議)
location /phpmyadmin {
allow 192.168.1.0/24; # 僅內網
deny all;
# ... php location 繼承上層
}
| 現象 | 原因 | 解決 |
|---|---|---|
| 空白頁 | display_errors=Off 且代碼報錯 | 開啟 display_errors 或查錯誤日誌 |
| Call to undefined function mysql_connect() | 未啟用 php_mysql.dll / php-mysqlnd | php.ini 啟用擴展、重啟服務 |
| 日期相差 8 小時 | 未設置 date.timezone | php.ini 設置 date.timezone = PRC |
| 上傳大文件失敗 | upload_max_filesize / post_max_size 過小 | 調整 php.ini、nginx client_max_body_size |
| Session 不生效 | session.save_path 無寫權限 | chmod 777 /tmp 或指定可寫目錄 |
PHP 環境搭建的核心在於「版本對應、路徑正確、權限到位、配置生效」。Windows 開發機推薦使用集成包;Linux 生產環境建議編譯安裝或使用官方倉庫。無論哪種方式,保留一份標準化的安裝腳本/Ansible Playbook,才能實現環境的可復現、可遷移、可審計。