「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP ネイティブ関数を有効/無効にする方法 – php.ini チュートリアル

PHP ネイティブ関数を有効/無効にする方法 – php.ini チュートリアル

2024 年 11 月 2 日に公開
ブラウズ:136

この記事では、php.ini ファイルの「disable_functions」ディレクティブを編集して、php ネイティブ関数を有効または無効にする手順を段階的に説明します。

場合によっては、システムと運用環境の互換性を考慮して、サーバー上のデフォルトの PHP 構成をカスタマイズする必要があります。

このチュートリアルを行う理由

私は、Laravel と Symfony のリアルタイム監視パッケージである Inspector.dev の作者です。このパッケージは、pro_open および proc_close php ネイティブ関数を使用して、サーバーから Inspector API へのデータ転送を非同期的に実行します。

デフォルトで有効になっている PHP のネイティブ CURL 関数を使用するように構成することもできますが、この場合、Sentry、Bugsnag などの他のパッケージと同様に、監視データが同期方法で Inspector に送信されます。これは、クライアントとの接続を終了する前に PHP エンジンが待機する必要があるため、アプリケーションの速度が少し遅くなる可能性があることを意味します。

最近、一部の開発者から、php 設定で proc_open 関数と proc_close 関数が無効になっているため、非同期データ送信を利用するにはロックを解除する必要があるという理由で私に連絡がありました。

非常に珍しいことですが、このユースケースのサポート リソースとしてこのチュートリアルを作成することにしました。

php.iniファイルとは何ですか

php.ini ファイルは PHP の構成ファイルです。ファイルには、「ディレクティブ」と呼ばれるキーと値のペアのリストが含まれています。ディレクティブはセクションにグループ化されていますが、これらは主に組織化を目的としています。

PHP は起動時にこのファイルを読み取り、内部データ構造をセットアップして構成を保存します。実行中、PHP はこれらの内部データ構造を参照して、エラー処理とログ、リソース制限 (メモリ、実行時間)、ファイル アップロード、データベース接続など、多くの重要な領域でどのように動作するかを決定します。

また疑問に思っている人のために: php.ini ファイルがなくても、PHP は動作します。デフォルト値がすべてのディレクティブに適用されるだけです。

詳しくない人のために、php.ini ファイルの例を次に示します。

https://github.com/php/php-src/blob/master/php.ini-production

php.ini の機能を有効/無効にする

php.ini ファイルを編集すると、PHP コード内で呼び出すことができないネイティブ PHP 関数を無効にすることができます。

この機能は、共有ホスティング環境で一部の機能の使用を制限するために使用されることがあります。これは、機能を誤って使用すると他のユーザーにセキュリティ上の問題を引き起こす可能性があるためです。 exec() などの関数は通常無効になっていますが、サーバー プロバイダーが保守的すぎる場合があり、日常のプログラミング タスクで必要な関数を無効にすることがあります。

php.ini ファイルを見つけます。

マシンのターミナルで以下のコマンドを実行して、ファイルの現在の場所を取得します (Win と Unix の両方で機能します):

php --ini

一般的な場所: /etc/php.ini、/etc/php/8.x/php.ini (x をインストールのバージョン番号に置き換えます)

サーバー上のファイルを編集するには、どの Unix マシンでも利用できる vim エディタを使用することを好みます。

// Use the file path from the command above
sudo vim /etc/php.ini

「disable_functions」ディレクティブまで下にスクロールします。これはファイルの前半にあり、カンマで区切られた関数のリストが含まれています。

disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

php.iniファイルを編集する

  • キーボードの文字「i」を押して、vim の INSERT モードに入ります。
  • リストから proc_open 関数と proc_close 関数を削除します。
  • ファイルの編集が終了したら、ESC キーを押します。これにより、INSERT モードが終了し、端末の左下から「– INSERT –」が消えます。
  • ファイルを保存するには、書き込みと終了の命令である「:wq」を入力します。

PHPエンジンを再起動します

新しい設定をロードするには、PHP を再起動する必要があります。以下の手順はほとんどのサーバーで機能するはずです。最終的には、Google で特定の OS を検索できるようになります。

// Change the version of the PHP with what is in use in your machine
sudo systemctl restart php8.2-fpm.service

さらに技術的な記事については、Linkedin または X でフォローしてください。

PHP アプリケーションを無料で監視する

Inspector は、ソフトウェア開発者向けに特別に設計されたコード実行監視ツールです。サーバーレベルで何もインストールする必要はありません。Laravel または Symfony パッケージをインストールするだけで準備完了です。

HTTP モニタリング、データベース クエリの洞察、アラートや通知を好みのメッセージング環境に転送する機能をお探しの場合は、Inspector を無料でお試しください。アカウントを登録してください。

または、Web サイトで詳細をご覧ください: https://inspector.dev

How to enable/disable PHP native functions – php.ini Tutorial

リリースステートメント この記事は次の場所に転載されています: https://dev.to/inspector/how-to-enabledisable-php-native-functions-phpini-tutorial-kpg?1 侵害がある場合は、[email protected] に連絡して削除してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3