目次
ini ファイルの構成パラメータを動的に設定する
ini ファイル内の構成情報を取得します
get_cfg_var() と ini_get()
ini_get_all()
設定情報の復元
現在ロードされている設定ファイルのパスを取得する
phpinfo()
总结
ホームページ バックエンド開発 PHPの問題 phpのiniファイル関連の操作機能を詳しく紹介します。

phpのiniファイル関連の操作機能を詳しく紹介します。

Jul 02, 2021 pm 03:24 PM
php

中小企業、特に起業家精神のある企業では、サーバー全体の構築は通常、PHP 開発エンジニアの責任の 1 つです。その中で最も重要なのは、サーバーの php.ini ファイルを構成することです。一部のパラメータはサーバーのパフォーマンスに大きな影響を及ぼし、一部のパラメータは PHP の実行中に動的に指定および取得できます。今日は、php.ini ファイルに関連するいくつかの操作関数を学習します。

phpのiniファイル関連の操作機能を詳しく紹介します。

ini ファイルの構成パラメータを動的に設定する

この関数は誰にとっても馴染みがあると思います。基本的に、PHP 開発を行ったことがある人なら誰でも知っているはずです。それを使った。ただし、一部のパラメーターは変更できません。

ini_set('allow_url_fopen', 0);
echo ini_get('allow_url_fopen'), PHP_EOL; // 1 ,无法修改,PHP_INI_SYSTEM

ini_set('memory_limit', -1);
echo ini_get('memory_limit'), PHP_EOL; // -1,可以修改,PHP_INI_ALL
ログイン後にコピー

コメントに注意してください。最初のコメントには PHP_INI_SYSTEM と書かれており、このパラメータは変更できません。はい、あなたは賢いので、これらのパラメータには対応する型があることが理解できたと思います。 PHP_INI_SYSTEM は、php.ini または httpd.conf でのみ変更でき、言語が動的に実行されている場合は変更できないことを意味します。

php.ini 設定パラメータには 4 つのタイプがあります:

  • PHP_INI_USER: ユーザー スクリプト (ini_set() など) または Windows レジストリ ( PHP 5.3 以降) を使用し、.user.ini で

  • PHP_INI_PERDIR を設定します。

  • # は、php.ini、.htaccess、または httpd で設定できます。 conf ##PHP_INI_SYSTEM: php.ini または httpd.conf で設定できます

  • PHP_INI_ALL: どこでも設定できます

つまり、次のようになります。 ini_set() を使用すると、PHP_INI_USER および PHP_INI_ALL タイプのパラメータを設定できますが、他の 2 つは php.ini またはその他の設定ファイルでのみ設定および変更できます。構成パラメータに対応する特定の型については、関連する PHP ドキュメントを参照してください。

https://www.php.net/manual/zh/ini.list.php

ini ファイル内の構成情報を取得します

もちろん、php を読んでください。 . ini ファイル内の構成情報には制限はありません。直接読み取ることができ、get_cfg_var() と ini_get() という 2 つの関数を使用して読み取ることができます。さらに、構成情報を配列コレクションの形式で取得できる関数 ini_get_all() があります。一つずつ見ていきましょう。

get_cfg_var() と ini_get()

どちらも 1 つの構成パラメータ情報を読み取ります。

echo get_cfg_var('error_reporting'), PHP_EOL; // 32759
echo ini_get('error_reporting'), PHP_EOL; // 32759

echo get_cfg_var('request_order'), PHP_EOL; // GP
echo ini_get('request_order'), PHP_EOL; // GP

// php.ini A=TEST_A
echo get_cfg_var('A'), PHP_EOL; // TEST_A
echo ini_get('A'), PHP_EOL; //
ログイン後にコピー

上の 2 つの項目については説明の必要はありませんが、注目していただきたいのは最後の項目です。 php.ini ファイルでカスタム構成パラメータ A を定義します。 get_cfg_var() は通常この情報を取得できますが、ini_get() は取得できないことがわかります。別の例を見てみましょう。

ini_set('error_reporting', E_WARNING);
echo get_cfg_var('error_reporting'), PHP_EOL; // 32759,只返回.ini的内容
echo ini_get('error_reporting'), PHP_EOL; // 2,返回当前配置运行时的状态
ログイン後にコピー

ini_set() を使用して error_reporting パラメータを動的に設定した後、get_cfg_var() は ini_set() によって設定された値を返しますが、ini_get() は引き続き php.ini ファイルに設定された値を取得します。

上記の 2 つの例から、これら 2 つの関数の違いがわかります。

  • get_cfg_var() では、カスタマイズされた構成パラメータ値を取得できますが、それは php でのみ可能です。 ini ファイルが優先されます。動的に変更されたパラメータ値は取得できません。

  • ini_get() は、カスタマイズされた構成パラメータ値を取得できません。現在の動的スクリプト ランタイム構成が優先されます。つまり、 、ini_set() の変更されたパラメータ値を取得できます

ini_get_all()

インストールしたいくつかの拡張機能、構成情報などのデータのセットを取得しますxDebug や mysqlnd など。

print_r(ini_get_all('swoole'));
echo PHP_EOL;
// Array
// (
//     [swoole.display_errors] => Array
//         (
//             [global_value] => On
//             [local_value] => On
//             [access] => 7
//         )

//     [swoole.enable_coroutine] => Array
//         (
//             [global_value] => On
//             [local_value] => On
//             [access] => 7
//         )

//     [swoole.enable_library] => Array
//         (
//             [global_value] => On
//             [local_value] => On
//             [access] => 7
//         )

//     [swoole.enable_preemptive_scheduler] => Array
//         (
//             [global_value] => Off
//             [local_value] => Off
//             [access] => 7
//         )

//     [swoole.unixsock_buffer_size] => Array
//         (
//             [global_value] => 262144
//             [local_value] => 262144
//             [access] => 7
//         )

//     [swoole.use_shortname] => Array
//         (
//             [global_value] => 
//             [local_value] => 
//             [access] => 4
//         )

// )
ログイン後にコピー

Swoole 用に作成したすべての構成情報が配列の形式で返されることがわかります。

設定情報の復元

ini_set() を使用してパラメータ情報を動的に設定した後、php.ini ファイル内のデフォルト設定に復元したい場合は、ini_restore を直接使用できます。 () 関数。それだけです。

ini_restore('error_reporting');
echo ini_get('error_reporting'), PHP_EOL; // 32759
ログイン後にコピー

まだ上記のコードを使用していますが、error_reporting は 2 に変更されています。この時点では、ini_restore() を直接使用して復元し、その後、ini_get() を使用して error_reporting パラメータが復元されていることを確認します。 to php .ini ファイルで定義された元の値。

現在ロードされている設定ファイルのパスを取得する

サーバーを引き継ぐとき、多くの場合、最初のステップは、mysql の my.ini や nginx の conf 関連の設定など、関連するアプリケーション設定ファイルを見つけることです。ファイル パス。PHP では、最初のステップは php.ini ファイルの場所を見つけることです。

echo php_ini_loaded_file(), PHP_EOL;
// /usr/local/etc/php/7.3/php.ini

echo php_ini_scanned_files(), PHP_EOL;
ログイン後にコピー

php_ini_loaded_file() を直接使用して、現在実行中のスクリプト環境にロードされている php.ini ファイルのパスを簡単に取得します。 php_ini_scanned_files() 関数は、php.ini ファイルをスキャンできるすべてのパスをカンマ区切り形式で返します。

実際、これら 2 つのパラメータは phpinfo() に反映されますが、多くの場合、運用環境では phpinfo() を直接使用できません。これら 2 つの関数または phpinfo() と比較して、より良い解決策は、コマンド ラインで php.ini ファイルの場所を直接見つけることです。

php --ini
# Configuration File (php.ini) Path: /usr/local/etc/php/7.3
# Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini
# Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
# Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini

php -i | grep "Configuration"
# Configuration File (php.ini) Path => /usr/local/etc/php/7.3
# Loaded Configuration File => /usr/local/etc/php/7.3/php.ini
# Configuration
ログイン後にコピー

phpinfo()

phpinfo() については、あまり説明する必要はありませんが、PHP の使い方を学ぶ開発者にとっては必須の内容です。ここでは、phpinfo() 関数のパラメータを紹介するだけです。はい、パラメータがあり、情報のすべてではなく一部のみを表示できます。

  • INFO_GENERAL:配置的命令行、 php.ini 的文件位置、建立的时间、Web 服务器、系统及更多其他信息。

  • INFO_CREDITS:PHP 贡献者名单。参加 phpcredits()。

  • INFO_CONFIGURATION:当前PHP指令的本地值和主值。参见 ini_get()。

  • INFO_MODULES:已加载的模块和模块相应的设置。参见 get_loaded_extensions()。

  • INFO_ENVIRONMENT:环境变量信息也可以用 $_ENV 获取。

  • INFO_VARIABLES:显示所有来自 EGPCS (Environment, GET, POST, Cookie, Server) 的 预定义变量。

  • INFO_LICENSE:PHP许可证信息。参见 » license FAQ。

  • INFO_ALL:显示以上所有信息。

phpinfo(INFO_MODULES);
ログイン後にコピー

上面的代码在页面中所显示的信息就只是已加载模式相关的配置信息了。phpinfo() 会直接输出到页面上,如果想将它的内容保存在一个变量中,我们需要使用输出缓冲控制来进行操作。我们将在后面的文章中讲到这方面的内容。这里就简单的给一段代码。

ob_start();
phpinfo();
$v = ob_get_contents();
ob_end_clean();

echo $v;
ログイン後にコピー

总结

不看不知道,一看吓一跳。原来只是使用过 ini_set() 去修改运行时内存大小,但直到今天才知道原来 ini_set() 并不是所有的配置都可以修改的,每个参数是否能动态修改还要看它的参数类型。

而且上面还忘了说了,我们并不能使用 ini_set() 去增加配置参数。也就是说,使用 ini_set("B", "TEST_B") 增加一个 B 参数,然后直接使用 ini_get() 也是无法获取的。

而且简单的获取参数信息的两个函数也有这么多的不同,phpinfo() 原来也有这么多参数。果然,文档才是最好的学习资料。旅程还没有停止,我们刷文档的脚步依然不能停,一起加油冲冲冲!!

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E5%85%B3%E4%BA%8Ephp%E7%9A%84ini%E6%96%87%E4%BB%B6%E7%9B%B8%E5%85%B3%E6%93%8D%E4%BD%9C%E5%87%BD%E6%95%B0%E6%B5%85%E6%9E%90.php
ログイン後にコピー

推荐学习:php视频教程

以上がphpのiniファイル関連の操作機能を詳しく紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles