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

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

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

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

PHP

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

Q&A

1回答

2590閲覧

CGIの中でPHPを動かしたい

natlpush

総合スコア32

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

PHP

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

0グッド

1クリップ

投稿2020/11/07 07:14

編集2020/11/07 07:58

掲示板CGIがあるのですが、その中でPHPを動かすことは可能でしょうか。

具体的には、PHPのセッションを使い

  • ログインの切り分け
  • メニューの表示の分岐
  • 名前の入力欄にあらかじめ入力

などがやりたいです。

.htaccessを使い htmlファイルでphpやcgiを実行する方法はあるのですが、CGIプログラムの中でPHPが動かせるととても便利なのですが。

よろしくお願いいたします。

##追記

CGIのサイトは

https://www.kent-web.com/bbs/patio.html

patio.cgi
というプログラムがhtmlファイルを読み込んでいます(63行目)。
このhtmlにPHPを入れられれば動きそうなのですが、ソースがそのまま出てしまいます。

.htaccess

AddType application/x-httpd-php .php .html

patio.cgi(66行目まで)

#!/usr/local/bin/perl #┌───────────────────────────────── #│ WEB PATIO : patio.cgi - 2019/11/10 #│ copyright (c) kentweb, 1997-2019 #│ http://www.kent-web.com/ #└───────────────────────────────── # モジュール宣言 use strict; use CGI::Carp qw(fatalsToBrowser); use lib "./lib"; use CGI::Minimal; # 設定ファイル認識 require "./init.cgi"; my %cf = set_init(); # データ受理 CGI::Minimal::max_read_size($cf{maxdata}); my $cgi = CGI::Minimal->new; error('容量オーバー') if ($cgi->truncated); my %in = parse_form($cgi); # 認証モード my %au = authent() if ($cf{authkey}); # 処理分岐 if ($in{read}) { read_log(); } if ($in{edit}) { pwd_form(); } if ($in{mode} eq 'form') { form_page(); } if ($in{mode} eq 'find') { find_page(); } if ($in{mode} eq 'note') { note_page(); } if ($in{mode} eq 'past') { past_page(); } bbs_list(); #----------------------------------------------------------- # メニュー部表示 #----------------------------------------------------------- sub bbs_list { # アラーム数定義 my $alarm = int ($cf{m_max} * 0.9); # ページ数 my $pg = $in{pg} || 0; # スレッド表示 my ($i,@log); open(IN,"$cf{nowfile}") or error("open err: $cf{nowfile}"); my $top = <IN>; while (<IN>) { $i++; next if ($i < $pg + 1); next if ($i > $pg + $cf{pgmax_now}); push(@log,$_); } close(IN); # 繰越ボタン作成 my $page_btn = make_pgbtn($i,$pg,$cf{pgmax_now}); # テンプレート読込 open(IN,"$cf{tmpldir}/bbs.html") or error("open err: bbs.html"); my $tmpl = join('',<IN>); close(IN);

テンプレとして読み込んだファイルでPHPを実行したい
htmlファイル

<?php session_start(); // ログイン状態のチェック if (!isset($_SESSION["USERID"])) { header("Location: login.html"); exit; }//if ?> <!doctype html> <html lang="ja"> <head>

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

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

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

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

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

m.ts10806

2020/11/07 07:18

「可能です」だけで良いでしょうか。 あと「CGI」は総称です。 具体的な言語名や環境など情報を提示されたほうが良いです。 (過去質問が何一つ参考にならないとは思えません)
dodox86

2020/11/07 07:47

「CGIとしてPHPを動かすことができるか」なのか、「現在稼働している掲示板CGIプログラムの中からPHPを使ってスクリプトを動かすことができるか」、どちらか判然としませんね。何となく後者を想像していて、PHPでセッションなどを利用して現存のCGI以上の動的なページを実現したい、とのような要望をお持ちな気がしますが。そうだとすると何か誤解しているところがあるのでは。
dodox86

2020/11/07 07:58

先の私の[2020/11/07 16:47]のコメントにすれ違いで質問文が追記されましたね。後者に近い印象です。
miyabi_takatsuk

2020/11/07 11:59

ひとまず、言語名は、Perlだと思われるので、 Perlの質問タグをつけるのと、質問をそのように修正しましょう。 Perlは、.cgiと拡張子がつくことが多いため、CGI = Perlと思われがちですが、 他の方のコメント通り、 CGIは総称のため、 あくまで、「PHPもPerlもCGIとして動かすことが可能な言語」になります。
guest

回答1

0

このhtmlにPHPを入れられれば動きそうなのですが、ソースがそのまま出てしまいます。

PHPは結局ApacheなどWebサーバーを介してアクセスされることによって実行されるものなので、そうではない、単にインクルードされた(という印象を受けました)状態では単なるそういう文字列が書かれたファイルに過ぎません。

http通信を起こす必要があります。
例えばcURLとか。
システムコマンドを実行して結果を得る方法もあります。
「perlからPHP実行」とかで調べてもそれなりに出てきます(情報古いものが多いので注意)

しかしながら、今提示されている情報だけでは全体像が見えません。
いずれもサーバーサイドの言語ですし、セッション使うのならどちらかに統一したほうが良いのでは?

投稿2020/11/07 08:21

編集2020/11/07 08:22
m.ts10806

総合スコア80875

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

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

natlpush

2020/11/07 08:30

ありがとうございます。 PHPで動いている会員サイトがあり、その中に掲示板CGIを導入したいと思います。 使いたかった掲示板プログラムが、たまたまCGIだったので困っています。 ログインフォームからセッションですべてを管理しているので、そのままPHPのセッションを使いたいです。 PHPであれば、名前をあらかじめ入力したり管理ページへのリンクを消したりとかは簡単なので、同じようにできればいいのですが。
m.ts10806

2020/11/07 08:34

PHPで掲示板作ったほうが良いです。ロジック上の違いは大きくないです。 でないと、セッションも含めてデータ共有面で難が出ます。
dodox86

2020/11/08 04:05

>@質問者さん 質問文から受ける印象は「既にあるCGIのプログラム内でPHPを動かしたい」ですが、実際は逆で、「Perlで動いているCGIのプログラムを、PHPで動いているサイト上でPHPのセッションを受け継ぐなどして使いたい」ですね。CGIとして作られているものはPerlに限らず、標準入出力と環境変数を介してデータをやり取りするので、そのようなことはほぼ不可能と思っていた方が良いです。(ほぼ不可能と書いたのは、PHPスクリプト内から環境変数と標準入出力を用意してCGIプログラムを起動し、入出力データを加工すれば不可能ではないかもしれない、という程度のことで、まったくお勧めできることではありません) m.ts10806さんの書かれているように、PHPで書き直す方が良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問