【PHP8.x】popen関数の使い方
popen関数は、指定された外部コマンドを実行し、そのプロセスとの間でデータのやり取りを行うためのファイルポインタを開く関数です。この関数を利用することで、PHPスクリプトから外部プログラムの標準入力や標準出力に対して、まるでファイルのように読み書きできるようになります。
第一引数には実行したい外部コマンドを文字列で指定します。例えば、ls -l
のようにシェルコマンドを記述します。第二引数には、外部プロセスとの通信モードを文字列で指定します。r
を指定すると、外部コマンドの標準出力をPHPスクリプトから読み取ることが可能になり、w
を指定すると、PHPスクリプトから外部コマンドの標準入力へデータを書き込むことが可能になります。
関数が成功した場合、外部プロセスへのパイプを表すファイルポインタ(リソース)を返します。このファイルポインタに対してfread()
やfwrite()
などの通常のファイル操作関数を使用することで、外部コマンドとの間でデータを送受信できます。もし外部コマンドの実行に失敗したり、パイプを開けなかったりした場合は、false
を返します。
popen
関数で開いたファイルポインタは、処理が終わった後に必ずpclose()
関数を使って閉じる必要があります。また、外部コマンドの実行は、悪意のある入力によって意図しないコマンドが実行される「シェルインジェクション」といったセキュリティリスクを伴うため、信頼できないユーザーからの入力値をコマンドに直接含める際は、十分な検証と対策を行うことが重要です。
基本的な使い方
構文(syntax)
popen(string $command, string $mode): resource|false
引数(parameters)
string $command, string $mode
- string $command: 実行するコマンドを指定する文字列
- string $mode: ファイルポインタのモードを指定する文字列('r':読み取り、'w':書き込み)
戻り値(return)
resource|false
指定されたコマンドを実行し、そのプロセスへのファイルポインタを返します。コマンドの実行に失敗した場合は false を返します。