PHP.INI 文件配置:初学者指南
你好啊,未来的 PHP 大师们!今天,我们将踏上一段激动人心的旅程,探索 PHP 配置的世界。别担心如果你之前从未写过一行代码——我将作为你的友好向导,带领你完成这次冒险。在本教程结束时,你将能够像专业人士一样配置 PHP!
什么是 PHP.INI?
在我们开始之前,让我们先来谈谈 PHP.INI 究竟是什么。想象一下你正在设置一部新智能手机。你可能想要调整一些设置,让它按照你的喜好工作,对吧?那么,PHP.INI 就像是 PHP 的设置菜单。它是一个配置文件,告诉 PHP 如何运行。
加载的配置文件
首先,让我们找出你的系统实际上正在使用哪个 PHP.INI 文件。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 "你好,世界!";
?>
如果 short_open_tag = On
,你可以写成:
<? echo "你好,世界!"; ?>
但通常推荐保持关闭,以获得更好的兼容性。
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 "文件有效,并且已成功上传。\n";
} else {
echo "上传失败。\n";
}
}
?>
session.save-handler = files
这个设置决定了会话数据如何存储。默认值是 'files',意味着会话数据会存储在服务器上的文件中。
<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "会话数据已保存!";
?>
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("连接失败:" . mysqli_connect_error());
}
echo "成功连接";
?>
就这样,伙计们!你已经迈出了进入 PHP 配置世界的第一步。记住,每个设置都会显著影响你的 PHP 脚本的行为,所以请明智地使用它们。在你继续你的 PHP 旅程时,你会变得更加熟悉这些设置以及如何利用它们。
快乐编码,愿你的 PHP 脚本永远运行顺畅!
Credits: Image by storyset