質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

3746閲覧

PHPはどうしてhtmk,cssのように単純にローカルに置いただけでは動かないのでしょうか。

kantowebmanager

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/03/30 12:22

非常に基本的なところだとは思うのですが、わかりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

まず、Web サーバー(Apache)というのは、

  • クライアント(Web ブラウザ)からのリクエストを受け取って、
  • 適切なコンテンツをレスポンスとして返す

だけしか本質的にはやっていません。そのコンテンツが HTML だったり JPEG だったり CSS だったりしますが、Web サーバーはその中身を特に解釈せずにブラウザに渡します。その結果を解釈しているのはブラウザです。
だからこそ使っているブラウザによって表示が異なる、のです。
(解釈しているブラウザが違えば、最終結果である描画も異なるわけです)

さて、そうなると、Web サーバーが適切なコンテンツを返せるなら、そのコンテンツは何も静的なものである必要は無いのです。リクエストに対して動的にレスポンスを構築して返せれば、Web でできることが大きく広がります。それを行えるように、CGI という技術が生まれました。
Web サーバーが受け取ったリクエストのうち、特殊な条件に該当するものだった場合には、そこで指定されたプログラムを起動して、そのプログラムの出力結果をレスポンスとして返す、というインターフェースが定められたのです。
そしてここで「プログラム」として、初期には Perl で書かれたスクリプトが、そして今では PHP や Ruby、場合によっては Java などが、その役割を担っているのです。

従ってこれらを利用する場合には、Web サーバーに対して「こういう場合はこういうプログラムを呼び出す」という設定をしてやり、しかもそのプログラムを準備してやらねばなりません。それをしない素の Web サーバーでは、プログラムを動かしてくれないのです。

投稿2018/03/30 15:31

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kantowebmanager

2018/04/01 06:30

ご回答ありがとうございます。 いつも思うことなのですがApacheのフォルダはhtmlやphpファイルなどが置かれているwebサーバの中にはなく、別のディレクトリの中にApacheがありました。 ApacheはPHPの実行環境(php.exe、php.soなど)を呼び出せればいいのでパスさえ正しく書けばwebサーバの外部に置かれていても問題ないということでしょうか? それとなのですがApahceはソフトウェアだと聞きますが、実際にはテキストファイルの集合なのでしょうか。自分のパソコンの中のApacheフォルダを見てそう思いました。
tacsheaven

2018/04/02 03:25

Apache という「プログラム」の置かれている場所と、Apache が使うリソース(HTML、画像等)は、別の場所にあるのは別におかしなことではありませんよ。 Microsoft Office だって、Office の文書(docxやxlsx)はドキュメントフォルダにあるけど、そこにOfficeのプログラムはないでしょう? セキュリティの観点や、マルチホスト(複数のWebサイトを一つのApacheで処理する)などを行うために、ApacheはWebサイトのリソースをApache自身とは別の場所におけるようになっているのです。 貴方が見ている「Apacheフォルダ」は、おそらくはhtdocsと呼ばれる「Webサイトのリソースが置かれている場所」です。逆に言うと、ここはいくらいじったとしても、Apacheそのものの動作には影響を与えません。(Webサイトには影響しますけれども)
guest

0

PHPは、サーバサイドのプログラムです。
なので、サーバ(Apache)が動いてなければ動作しません。
たとえばWindowsなら、「C://..../xxxx.php」とかでファイルを開くと、それはPHPファイルとして実行されるのではなく、ファイルを開く(閲覧する)と言う動作になります。
そのため、ローカルでPHPの動作を確認をするためには、XAMPPやMAMPなどでサーバをたてて「http://~~~」としてアクセスする必要があります。

投稿2018/03/30 15:33

編集2018/03/30 23:43
kszk311

総合スコア3404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kszk311

2018/04/01 11:57

はい、大体そんな感じです。
guest

0

ベストアンサー

それはPHPファイルが, HTMLファイル(正確にはHTMLファイルに限らない汎用のテキスト・バイナリデータ)を生成するスクリプトプログラムファイルだからですよ.
因みにPHPをサポートするWEBサーバーを介さずとも, phpコマンドが使えるのであればPHPファイルからHTMLコードを出力することもできます.

NOTE:
それにHTMLファイルだってCSSファイルだって元は単なるテキストデータだよ. そのままでは何の使い途もない. でもこれをWEBブラウザで読み込むから, テキストデータの中のタグとかスタイル記述とかがWEBブラウザによってスクリーン上にグラフィカルに出力されるわけだね.
ここにローカルだとかサーバーだとかの区別はないよ.

OSもブラウザもPHPは理解できず

そうだね, そのままでは無理だね. 別途PHPコードを解釈できるアプリやライブラリが必要となるね.

apacheなどのような特殊なwebサーバのみがPHPを理解できる

apacheだってPHPを理解しているわけでないよ
apacheはphpがリクエストされた際にPHPの実行環境を(モジュール経由で)呼び出し, .phpコードの実行結果を受け取っているんだ.
だからapache以外のWEBサーバーだって, このPHPの実行環境を呼び出すことが出来れば.phpファイルから動的にHTMLコードを取得してクライアントに返せるんだ.

投稿2018/03/30 12:35

編集2018/03/31 03:03
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kantowebmanager

2018/03/30 13:01

ご回答ありがとうございます。 OSもブラウザもPHPは理解できず、apacheなどのような特殊なwebサーバのみがPHPを理解できるということでしょうか。
kantowebmanager

2018/03/30 13:46

テキストデータのhtmlやcssがブラウザ画面上でレンダリングされるのはブラウザの機能だと理解できているのですが、PHPの場合はPHPをプログラムとして文法通りに動かしているのは何になるのでしょうか。 Apacheなどの特定のwebサーバだと思っていたのですが、「PHPの実行環境」というのが理解できなかったです。
defghi1977

2018/03/30 21:00

> PHPの場合はPHPをプログラムとして文法通りに動かしているのは何になるのでしょうか。 例えば「php.exe」とか「php.so」(ちょっと語弊があるけれど) イメージできなければ実際に手を動かせば良いのです. PHPの実行環境(例えばphp.exeとか)はここから入手できます https://windows.php.net/download/ > 「PHPの実行環境」というのが理解できなかったです。 .javaを実行するにはJavaの実行(コンパイル)環境が .jsを実行するにはJavaScriptの実行環境が(Node, wsh) などが要るのですよ. つまり、 「テキストで記述されたソースコード」には「そのソースコードを解釈できる実行環境」が必要なのです. これはHTMLだろうとPHPだろうと全く同じですよ.
kantowebmanager

2018/03/31 02:11

Apacheによって呼び出されるPHPの開発環境とは、php.exe、php.soなどのPHPの設定ファイルを指しているということでしょうか。 ApacheからPHPの設定ファイルが呼び出された後で実際にPHPのスクリプトが解釈されるということなのでしょうか。 それとなのですが、PHPスクリプトを解釈するのは何でしょうか。
defghi1977

2018/03/31 02:20

PHPの開発環境じゃなくてPHPの実行環境 php.exe、php.soはPHPの設定ファイルじゃなくてPHPの実行ファイル ややこしいけれど、 - プログラム言語としてのPHP - プログラム実行環境としてのphp.exe,php.so - プログラムコードとしてのPHPコード - プログラムコードが記述されている.phpファイル を一緒くたにしているので判りにくいのかもしれません. > ApacheからPHPの設定ファイルが呼び出された後で実際にPHPのスクリプトが解釈されるということなのでしょうか。 "だいたい合ってる" apache側に「.phpファイルが呼び出されたらphp.soに処理を行わせて、その結果を返す」というルールが組み込まれているのです. > それとなのですが、PHPスクリプトを解釈するのは何でしょうか。 PHPの実行環境です
退会済みユーザー

退会済みユーザー

2018/03/31 02:52

バイナリデータも作成・返却できるから説明がちょっと間違えてる気が
defghi1977

2018/03/31 02:54

ああ、そう言えばできますね. 失念してました.
kantowebmanager

2018/04/01 06:26

ありがとうございます。 Apacheはソフトウェアだと思いますがwebサーバの中にはなく、別のディレクトリの中にApacheがありました。 これは通常のありふれた構造ですよね? ApacheはPHPの実行環境(php.exe、php.soなど)を呼び出せればいいのでパスさえ正しく書けばwebサーバの外部に置かれていても問題ないということでしょうか?
defghi1977

2018/04/01 06:48

基本的にサーバーなどを含むソフトウェアというものは「大きくて多機能なものを一つ」作ってしまうと一箇所修正するために全体を取り替える羽目になり, これには多大な労力を要します. そのため、「小さくて機能を絞ったものをたくさん」作り、どこかが壊れていても壊れている部品だけを修正し取り替えられるように工夫してあるのです. これはWEBサーバーにおいても同様で, (ざっくりと)HTTP通信を司るapacheとHTML等を動的に生成するPHPと言ったように役割分担しています. そして、各種設定ファイルには連携する相手の情報(例えばパスとか)が記述されているのですね. >Apacheはソフトウェアだと思いますがwebサーバの中にはなく、別のディレクトリの中にApacheがありました。 言わんとしていることは判ります. 通常apache本体は外部に公開するコンテンツを保管しているディレクトリとは別の場所にあります. >ApacheはPHPの実行環境(php.exe、php.soなど)を呼び出せればいいのでパスさえ正しく書けばwebサーバの外部に置かれていても問題ないということでしょうか? 「webサーバの外部」に違和感がありますが, 基本的に相手を正しく呼び出せればいいので, PHPの実行環境そのものの配置位置にさほど意味はありません. ※但し, WEBサーバーは外部からのアクセスを受けるため, 悪意あるユーザーから余計なソフトウェアが呼び出されないように防御する必要があります. そのため, apacheやPHPの実行環境本体は外部に公開するディレクトリとは別の保護された処に配置するようになっています.
kantowebmanager

2018/04/01 07:40

そうだったんですね。 私はmacですが、macではApacheは/etc内にあり、webサーバは/ライブラリ/webserverの中にあります。 どうしてApacheもwebserverの中に置かないのかなと不思議に思ったのですがセキュリティのためということですよね。 Apacheフォルダの中を見るとテキストファイルしかないようなのですが、Apacheはソフトウェアと言われたりしていますがテキストファイルの集合体なのでしょうか。 てっきりもっと複雑な実行ファイルなどが数多くあるのかと思っていました。
defghi1977

2018/04/01 07:47

いや、どっかにバイナリがあるはずですよ. 見つからないだけで. (そこまでは私も判りません)
kantowebmanager

2018/04/11 13:05 編集

遅くなってしまい大変申し訳ありません。 このたびは誠にありがとうございました。
guest

0

他の言語と比べるとPHPでも置いただけで使える感覚ではあるけど。
FTPでアップするレベルではhtmlもPHPも同じ。
他だとrails serverみたいにそれ自体がサーバーになることが多い。
PHPにもphp -Sがあるけど公開用には使えないので一般的にはWebサーバーとセット。

投稿2018/03/30 13:35

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kantowebmanager

2018/03/30 13:53

ご回答ありがとうございます。 FTP上でもPHPはApacheなどを入れて初めて正常に動くファイルなのでPHPが動く環境を作るのに手間がかかる印象があります。 逆にFTPではApacheなどは既に入っているということでしょうか? PHPを動かしているものが何なのかを考えるとわからなくなりました。
guest

0

動作環境の違いだと理解してます。html,cssはブラウザ上で動いていて、PHPなどはコンピューターの上で動いてます。コンピューターと人間の間にブラウザという、PC個別の環境が入っているんです。

投稿2018/03/30 13:10

mike2mike4

総合スコア901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kantowebmanager

2018/03/30 13:50

ご回答ありがとうございます。 PHPを動かすための動作環境が必要ということになると思うのですが、それは実際には何になるのでしょうか。 例えばwindowsだとxamppをインストールしてその中のApacheを起動すればPHPは動きますがそれがなぜなのかを考え始めるとわからなくなりました。
mike2mike4

2018/03/30 14:59

PHPについては以下を読んでいただくとして、 https://techacademy.jp/magazine/6618 この中のjavascriptはブラウザ内で実行される(サーバーサイドで動くのもあるようですが)プログラム言語です。HTMLと同じです。 それに対して、PHPはインタプリタのスクリプト言語なのでスクリプトのエンジンがXAMPPなどをインストールすると一緒にインストールされます。
kantowebmanager

2018/04/01 06:23

PHPの書き方はこれから学習するのですが、PHPがなぜhtmlのように単にローカルに置いただけではプログラムとして解釈されないのかが気になっています。 Apacheはソフトウェアだと思いますがwebサーバの中にはなく、別のディレクトリの中にApacheがありました。 ApacheはPHPの実行環境(php.exe、php.soなど)を呼び出せればいいのでパスさえ正しく書けばwebサーバの外部に置かれていても問題ないということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問