錯誤現象
Deprecated: Function set_magic_quotes_runtime() is deprecated in ...
原因
- PHP 5.3 起
set_magic_quotes_runtime() 被標記為棄用。
- PHP 6.0(後併入 PHP 7)已完全移除此功能。
- 魔術引號機制已被社區公認設計失誤,現代 PHP 建議使用預處理語句防止 SQL 注入。
解決方案
方案一:註釋或刪除調用行(推薦)
// set_magic_quotes_runtime(0); // 直接刪除或註釋
方案二:使用 @ 抑制錯誤(不推薦,僅臨時過渡)
@set_magic_quotes_runtime(0);
方案三:替換為 ini_set(兼容舊代碼)
// 替換前
set_magic_quotes_runtime(0);
// 替換後
ini_set("magic_quotes_runtime", 0);
最佳實踐
- 徹底清理代碼庫中所有
set_magic_quotes_runtime 調用。
- 檢查
php.ini 中 magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase 均設為 Off。
- 資料庫操作統一使用 PDO 或 MySQLi 預處理語句。
- 輸出 HTML 時使用
htmlspecialchars() 防止 XSS。