[PHP] Linuxサーバーとのデータ連携方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

PHPを使っているサーバーはLinuxが圧倒的に多いと思いますが、最近は別のサーバーAPIと連携したり、サーバー内の別モジュールとのデータ連携をしたりするケースが増えてきました。

そんな時、PHPでターミナルコマンドを実行して返り値を受け取ることで便利にWEBツールを作ると、開発工数などもかなり抑えられて作業を進めることができます。

systemコマンド

「system」「exec」でコマンドラインを実行することができますが、返り値を受け取ることを考えるとexecを使うことをオススメします。

簡単な使い方

注意点

1. $resは、execで上書きされずに、追記されるので、直前にunsetして、情報を初期化する事
2. 受け取った$resは、配列で返るため、単一の値であっても、配列として扱いましょう。
3. execで実行されるコマンドのディレクトリは、実行しているphpが配置されている場所が基本になる。

サンプル

実行はブラウザでアクセスしてください。

特定ファイル内の文字データを取得する

phpでテキストファイルを読み込んで処理をしてもいいのですが、UIスピードは、コマンドのcatやgrepやawkなどが圧倒的に早いので、大容量テキストを扱う場合などはこういった方法をオススメします。

外部サイトのソースを取得する

指定したURLのページが表示されます。
file_get_contentsを使ってurlからソースを取得してもいいのですが、wgetコマンドのオプションで便利なものが大量にあるので、phpで処理するよりもはるかに便利な場合が多いです。

Linux以外のOSでの利用

windowsの場合はxampを使ったりiisを使ったりすると思いますが、linuxのsystemコマンドと違う為、今回の対象とは外させてもらいます。
macの場合は、brewなどを使って、linuxと近い環境に持って行くことはできますが、たま〜にびみょ〜に違うことがあり、調べるのに時間を使うことが多いので、
windowsもmacも、vagrantなどを使ってlinuxで作業するようにしてください。

注意点

当たり前ですが、「php.ini」に、exec命令を禁止していると、今回の記事は全て有効に使えないので、以下を確認しておいてから実行してください。

エンジニアが複数使うようなPHPファイルを配置するサーバーの場合はセキュリティ対策としてexecは利用不用にするほうがいいので、その場合は、プラグインやAPIなどを駆使してください。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です