PHPでWeb Serverアプリケーションを作っています。
PHPでUNIXシステムコマンドを実行することはできますでしょうか?
具体的に何をしたいかというと、動的に作られるページだとgoogle等に登録されるまで時間かかるので、
あるページに情報が登録されるたびに、wgetで動的ページをファイルに吐き出して、検索はgrepで引っ掛けて、内部的に処理したいと考えております。
(1)PHPで、wgetを呼び出して、ファイルに吐き出すこと
(2)Webページで、検索フィールドに文字を入力すると
入力文字がgrepの引数に渡されて、その結果をPHPで
受けること
を実現する方法はございますでしょうか。
No.1ベストアンサー
- 回答日時:
がると申します。
とりあえず、バッククォートまたは shell_exec という関数を用いることで、任意のコマンドが発行できます。
http://php.s3.to/man/function.shell-exec.html
あたりをご覧下さい。
なお、設計次第では「OSインジェクション」などのセキュリティホールを生みますので、どうぞご注意くださいませ。
No.2
- 回答日時:
あなたがサーバ管理者であるなら、全てのコマンドを利用する事が出来ます。
#1さんの指摘通り、セキュリティには万全の注意をする必要があります。
関数としては
exec、shell_exec
等のプログラム実行関数があります。
http://php.s3.to/man/ref.exec.html
ここで注意しなくてはいけないのは、この関数はPHPが動いている環境、おそらくapacheやnobodyの実行権限でされるという事です。今回の質問者さんのやりたいことですと、一般ユーザ権限で出来るwgetやgrepなので特に問題はありませんが、実行権限のないコマンド、例えばuseraddとか、passwdとかは、sodoを使って実行権限を委譲すれば、WEBからも実行可能です。sodoの使い方は長くなるので説明は省きます。
繰り返しますが、プログラム実行関数は非常に大きなセキュリティホールになる可能性がありますので、くれぐれも気をつけて下さい。
別にシェルスクリプトを作ってWEBディレクトリ以外に作成しておいて、実行権限をPHP(WEB、通常nobodyかapache)にしておいて、それを呼び出す、というのが比較的安全かもしれません。
なお、質問者さんのやりたい事ですと、curl関数でファイルに保存し、namazuモジュールで検索、という方法も考えられると思います。
curl関数
http://www.php.net/manual/ja/ref.curl.php
PHPでnamazu
http://suwako.plala.jp/pukiwiki/index.php?%5B%5B …
参考URL:http://taketan.mydns.jp/xoops/modules/bwiki/?PHP
ありがとうございます。
やはりセキュリティには気をつけないといけませんね。
namazuをPHPで呼び出すのを調べたのですが、
UNIX用のnamazu呼び出しモジュールが現在公開されていないようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- MySQL 私の考えていることは ・mySQL ・PHP ・web制作 この三つのスキルがあれば実現しますか? 4 2023/08/19 02:48
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトをPHPで動かそ...
-
phpからエクセルのマクロを実行...
-
php実行中に実行中のphpファイ...
-
別サーバのプログラムを起動
-
eclipseのlocalhostの設定について
-
ヒアドキュメントの中で演算子...
-
【PHP】命令は記述順に処理...
-
mysql複数レコードをまとめて削...
-
PHP フォルダ名やファイル名に0...
-
PHPからCプログラムを実行して...
-
JSのWINOW.CONFI...
-
PHPからlhaコマンドを使いたい
-
PHPの特徴は
-
PHPファイルをcronで実行す...
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
-
PHP8を使うと、大量のWarningが...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
php実行中に実行中のphpファイ...
-
phpからエクセルのマクロを実行...
-
ヒアドキュメントの中で演算子...
-
PHPからバッチファイルの実行
-
【PHP】命令は記述順に処理...
-
シェルスクリプトをPHPで動かそ...
-
Switch文における、returnとbre...
-
httpdのプロセスが自動で消えな...
-
copy() で属性保存
-
Prompt入力値をphp変数として取...
-
JSのWINOW.CONFI...
-
htmlでsubmitで指定したAction...
-
unix(freebsd)でmysqldumpコマ...
-
PHPのsystem()でjava
-
別サーバのプログラムを起動
-
PHPでコマンドプロンプトを実行...
-
社内LANで複数台のPCからApache...
-
PHPからCプログラムを実行して...
-
PHPで、C#のプログラムを実行す...
おすすめ情報