D:/Software/GreenSoft/Php/php5.4.6/)httpd.conf,新增:# PHP 模組載入 LoadModule php5_module "D:/Software/GreenSoft/Php/php5.4.6/php5apache2_2.dll" # php.ini 路徑 PHPIniDir "D:/Software/GreenSoft/Php/php5.4.6/" AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # 後綴名過濾 AddHandler application/x-httpd-php .php # 或使用 FilesMatch <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
編輯 php.ini:
; 擴展庫目錄(依實際路徑調整) extension_dir = "D:/Software/GreenSoft/Php/php5.4.6/ext" ; 啟用 MySQL 擴展 extension=php_mysql.dll
D:\Software\GreenSoft\MySql\MySql56bin 目錄加入系統環境變數 Pathcd D:\Software\GreenSoft\MySql\MySql56\bin mysqladmin -u root -p debug shutdown mysqld --install MySql56 --defaults-file=D:\Software\GreenSoft\MySql\MySql56\my.cnf net start MySql56 # 停止:net stop MySql56 # 移除:mysqld --remove MySql56 / sc delete MySql56 # 測試:mysqlshow / mysqladmin version status proc
[mysqld] port=3306 serverid=1 socket=/tmp/mysql.sock basedir="D:/Software/GreenSoft/MySql/MySql56/" datadir="E:/DataRoot/MySqlData/" log-error="D:/Software/GreenSoft/MySql/MySql56/log/error.log" log-slow-queries="D:/Software/GreenSoft/MySql/MySql56/log/slow-query.log" character-set-server=latin1 default-storage-engine=INNODB wait_timeout=10 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION max_connect_errors=10000000 max_connections=100 back_log=384 query_cache_size=32M read_buffer_size=4M read_rnd_buffer_size=16M key_buffer_size=54M sort_buffer_size=32M join_buffer_size=8M skip-locking skip-name-resolve # skip-networking # 遠程連接勿開啟 table_cache=1024 table_open_cache=256 tmp_table_size=34M thread_cache_size=120 thread_concurrency=8 # InnoDB 參數 innodb_additional_mem_pool_size=3M innodb_buffer_pool_size=105M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=2M innodb_log_file_size=53M innodb_thread_concurrency=9 # MyISAM 參數 myisam_max_sort_file_size=100G myisam_sort_buffer_size=68M
| 類別 | 核心參數 | 說明重點 |
|---|---|---|
| 路徑與基礎 | basedir, datadir, socket, pid-file, character-sets-dir, lower_case_table_name | 指定安裝根目錄、資料目錄、通訊套接字、進程 PID 檔、字符集目錄、表名大小寫敏感度 |
| 語言與字符集 | character-set-server, collation-server, language | 新資料庫/表預設字符集、排序規則、錯誤訊息語言 |
| 網路與安全 | port, enable-named-pipes, skip-name-resolve, skip-networking, skip-grant-tables, shared-memory, bind-address | TCP 端口、命名管道、禁用 DNS 反解、禁用 TCP/IP、跳過權限表、共享記憶體、綁定 IP |
| 記憶體與快取 | key_buffer_size, query_cache_size, query_cache_type, read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size, table_cache, tmp_table_size, thread_cache_size, thread_concurrency | 索引塊快取、查詢快取、讀/排序/連接緩衝區、表快取、臨時表大小、執行緒快取、並發數 |
| 日誌系統 | log, log-slow-queries, long_query_time, log-bin, log-bin-index, max_binlog_size, binlog-do/ignore-db, sync_binlog, log-error | 通用查詢日誌、慢查詢日誌、二進制日誌(含索引/大小/過濾/同步)、錯誤日誌 |
| 主從複制 | server-id, log-bin, master-host/user/password/port, master-connect-retry, read-only, replicate-do/ignore-db/table, slave-skip-errors | 主從唯一 ID、二進制日誌、主庫連線資訊、重試間隔、從庫唯讀、複制過濾規則、錯誤跳過 |
| InnoDB 核心 | innodb_buffer_pool_size, innodb_log_file_size, innodb_log_buffer_size, innodb_flush_log_at_trx_commit, innodb_file_per_table, innodb_thread_concurrency | 緩衝池(建議物理記憶體 80%)、日誌檔案大小、日誌緩衝、提交同步策略、獨立表空間、內核並發 |
| InnoDB 日誌與表空間 | innodb_log_group_home_dir, innodb_log_files_in_group, innodb_flush_method, innodb_data_home_dir, innodb_data_file_path, innodb_autoextend_increment, innodb_lock_wait_timeout, innodb_fast_shutdown | 日誌目錄/檔案數/同步方式、表空間路徑/檔案路徑/自動擴展/鎖等待/快速關閉 |
若遇 Call to undefined function mysql_connect(),檢查 phpinfo() 確認無 mysql 擴展,則需編譯安裝:
cd /php/source/ext/mysql /usr/local/bin/phpize ./configure --with-php-config=/usr/local/bin/php-config --with-mysql=/usr/local/mysql/ make && make install # 將產生的 mysql.so 複製到 extension_dir 目錄 # php.ini 新增 extension=mysql.so # 重啟 Apache
本教程涵蓋 Windows 綠色安裝與 Linux 編譯安裝兩大主流場景,配置檔參數分類詳解可作為調優參考。實際部署時請根據硬體資源(記憶體、CPU 核心數)調整緩衝區大小與並發參數。