以下是您提供的英文文本翻译成繁體中文的版本:
# PHP.INI 檔案配置:初學者指南
你好,未來的 PHP 巫師們!今天,我們將踏上一段令人興奮的旅程,進入 PHP 配置的世界。別擔心如果你從未寫過一行代碼——我將成為你這次冒險的友好導遊。在這個教學結束時,你將能夠像專業人士一樣配置 PHP!
## PHP.INI 是什麼?
在我們深入之前,讓我們先來討論一下 PHP.INI 實際上是什麼。想像你正在設定一款新的智慧手機。你可能會想要調整一些設定,讓它按你的方式工作,對吧?那麼,PHP.INI 就像是 PHP 的設定菜單。它是一個配置檔案,告訴 PHP 如何行為。
## 載入的配置檔案
首先,我們來找出你的系統實際上正在使用哪個 PHP.INI 檔案。PHP 可以根據其設置方式使用不同的配置檔案。這裡有一個簡單的方法來檢查:
```php
<?php
phpinfo();
?>
將這段代碼保存為一個 PHP 檔案(例如 info.php
),然後在網頁瀏覽器中運行它。尋找 "Loaded Configuration File" 項目。那就是你的活動 PHP.INI 檔案!
常見的 PHP.INI 設定
現在,讓我們探討一些 PHP.INI 中最重要的設定。我將解釋每一個設定的作用,並給你們如何使用它們的例子。
short_open_tag = Off
這個設定決定了 PHP 是否應允許使用 PHP 開標的簡短形式 (<?
)。當它關閉時,你必須使用完整的 PHP 開標 (<?php
)。
<?php
echo "Hello, World!";
?>
使用 short_open_tag = On
時,你可以這樣寫:
<? echo "Hello, World!"; ?>
但通常建議保持關閉以獲得更好的兼容性。
safe_mode = Off
安全模式是較早版本 PHP 中的安全功能。它在 PHP 5.4.0 及之後的版本中被棄用並移除。如果你使用的是現代 PHP 版本,你將不會看到這個設定。
disable_functions = [function1, function2...]
這是一個強大的安全功能。它允許你禁用你認為有風險的特定 PHP 函數。例如:
disable_functions = exec,passthru,shell_exec,system
這將阻止 PHP 執行系統命令,這可能會是一個安全風險。
max_execution_time = 30
這個設定將腳本允許運行的最長時間設為秒數,在腳本被終止之前。這就像為你的腳本設置計時器。
<?php
// 這個腳本將最多運行 30 秒
for ($i = 0; $i < 1000000; $i++) {
echo $i . "<br>";
}
?>
error_reporting = E_ALL & ~E_NOTICE
這個設定控制哪些錯誤被報告。E_ALL
意味著報告所有錯誤,~E_NOTICE
意味著除了通知。
<?php
// 使用 E_ALL & ~E_NOTICE,這將不會顯示錯誤
echo $undefinedVariable;
?>
register_globals = Off
這是一個古老且不安全的特性。它在 PHP 5.4.0 中被棄用並移除。在舊版本中,始終保持關閉。
magic_quotes_gpc = On
這個設定會自動轉義輸入數據,使其免受 SQL 注入的攻擊。然而,它在 PHP 5.4.0 中被棄用並移除。在現代 PHP 中,你應該使用預處理語句。
file_uploads = [on/off]
這個設定控制是否允許文件上傳。
<?php
if ($_FILES) {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed.\n";
}
}
?>
session.save-handler = files
這個設定決定了會話數據如何存儲。默認值是 'files',意味著會話數據存儲在服務器上的文件中。
<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "Session data saved!";
?>
ignore_user_abort = [On/Off]
這個設定決定了在用戶關閉連接後腳本是否應繼續運行。
<?php
ignore_user_abort(true);
set_time_limit(0);
// 這個腳本即使用戶關閉瀏覽器也會繼續運行
while (true) {
file_put_contents('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
sleep(1);
}
?>
MySQL 設定
PHP.INI 也包含了 MySQL 連接的設定:
設定 | 描述 | 示例 |
---|---|---|
mysql.default_host | 預設 MySQL 伺服器 | mysql.default_host = localhost |
mysql.default_user | 預設 MySQL 用戶名 | mysql.default_user = root |
mysql.default_password | 預設 MySQL 密碼 | mysql.default_password = password123 |
記住,通常最好在腳本中而不是在 PHP.INI 中設定這些,出於安全原因。
<?php
$conn = mysqli_connect('localhost', 'root', 'password123');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
就这样,各位!你們已經踏出了進入 PHP 配置世界的第一步。記住,每一個這樣的設定都會對你的 PHP 腳本行為產生重大影響,所以請謹慎使用。隨著你繼續在 PHP 旅程上的進步,你將會更熟悉這些設定以及如何將它們用到你自己的優勢上。
開心編程,願你的 PHP 腳本總是運行順暢!
Credits: Image by storyset