PHP.INIファイル設定:初級者向けガイド

こんにちは、未来のPHP魔法使いさんたち!今日は、PHP設定の世界に興味深い旅に出発します。心配しないでください。これまでコードを書いたことがない方でも、私はあなたの親切なガイドとしてこの冒険を案内します。このチュートリアルの終わりには、プロのようにPHPを設定できるようになるでしょう!

PHP.INI File Configuration

PHP.INIとは?

まず、PHP.INIが実際に何であるかについて話しましょう。新しいスマートフォンを設定する imagine してみてください。おそらく、好みに合わせていくつかの設定を調整したいと思うでしょう、よね?そうですね、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 "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
$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