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

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

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

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

解決済

オープンソースのプログラムを実行したい

mlore
mlore

総合スコア1

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

1回答

0リアクション

0クリップ

1000閲覧

投稿2021/10/19 00:03

前提・実現したいこと

http://wiz-code.digick.jp/ajax/demo.online-chat.html
こちらのチャットシステムのソースコードを使い、実行したいのですが、やり方がわかりません。
どういう順序でやれば実行できるのか指南いただきたいです。

該当のソースコード

PHP

<?php date_default_timezone_set('UTC'); /* スクリプトの実行時間 */ set_time_limit(60); /* セッション・クッキーはブラウザ終了で破棄。HTTPSであれば第4引数はtrueを指定する */ session_set_cookie_params(0, '/', '', false, true); /* キャッシュを無効化とブラウザバック対応 */ session_cache_expire(0); session_cache_limiter('private_no_expire'); require_once('Cache/Lite.php'); require_once('functions.php'); define('APP_NAME', 'online_chat'); header('Content-type: text/html; charset=utf-8'); session_start(); /* ページの初回訪問者への処理 */ if (!isset($_SESSION['client_id'])) { $_SESSION['client_id'] = random_str(); } /* ノンスを作成 */ $nonce = session_id(); /* Cache_Liteの初期化時に指定するオプション。チャットデータの保存期間は24時間とする */ $options = get_cache_lite_options(array('lifeTime' => 86400)); try { $cache = new Cache_Lite($options); $chat_data = $cache->get('chat_data', APP_NAME); /* チャットデータが存在しなければ新規作成してファイルに保存する */ if ($chat_data === false || !is_array($chat_data)) { $chat_data = array(); $cache->save($chat_data, 'chat_data', APP_NAME); } /* 読み込みエラー時に備えて直前のデータをキャッシュする */ $_SESSION['chat_data_cache'] = $chat_data; /* クライアントに最後に送ったチャットデータのIDを格納 */ $_SESSION['last_chat_id'] = null; session_write_close(); } catch (Exception $e) { format_error_log($e->getMessage, __FILE__, __LINE__); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>チャットルームのテストページ - Server-Sent EventsとAjax・PHPのリアルタイム・チャットシステム | ウィザード・コード - WIZARD-CODE</title> <link href="/lib/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <h1 class="h2">チャットルームのテストページ</h1> <p><strong>Server-Sent Events</strong>/<strong>Ajax</strong>/<strong>PHP</strong>を組み合わせたリアルタイム・チャットシステムです。SSEが実装されていない<strong>Internet Explorer</strong>では利用できません。リアルタイムとありますが、ユーザー間で同期していないので実際には擬似リアルタイムです。</p> <p>セキュリティについて、Ajax通信はトークンで<strong>CSRF</strong>対策を行います。入力文字のバリデーションはクライアント側で行い、制御文字や特殊文字は入力不可として送信しません。サーバー側の対策は出力時のエスケープ処理のみです。</p> <p>Google ChromeのデベロッパーツールやFirebugなどでストリーミングの中身が確認できます。「ネットワーク」のタブを開くとchat-data-stream.phpがコネクションを張り続けているのがわかると思います。書き込まれた内容はキャッシュファイルに24時間保存され、その後に自動的に削除されます。</p> <p>ソースコードを<a href="http://wiz-code.digick.jp/dev/html5/stream/online-chat/online-chat.html">こちらのページ</a>で公開しています。ライセンスフリーです。</p> <form id="chat-form"> <div id="name-group" class="form-group"> <label for="chat-name" class="control-label">名前を入れてください</label> <input type="text" class="form-control" id="chat-name" name="chat-name" placeholder="3文字以上20文字まで入力できます(空欄でもOK)。"> </div> <div id="message-group" class="form-group"> <label for="chat-message" class="control-label">メッセージをどうぞ</label> <input type="text" class="form-control" id="chat-message" name ="chat-message" placeholder="最大60文字まで入力できます。" autocomplete="off"> </div> <input type="hidden" id="nonce" name="nonce" value="<?=h($nonce)?>"> <button id="submit-button" type="submit" class="btn btn-info">チャットを送信</button> </form> <table class="table"> <thead> <tr> <th class="col-xs-2 col-sm-2 col-md-2 col-lg-2">名前</th> <th class="col-xs-8 col-sm-8 col-md-8 col-lg-8">メッセージ</th> <th class="col-xs-2 col-sm-2 col-md-2 col-lg-2 text-center">送信時間</th> </tr> </thead> <tbody id="chat-list"></tbody> </table> </div> <script src="/lib/jquery/jquery-2.2.2.js"></script> <script src="/lib/bootstrap/3.3.1/js/bootstrap.min.js"></script> <script src="/lib/underscore/1.8.3/underscore.js"></script> <script src="/js/online-chat.js"></script> </body> </html>

PHP

date_default_timezone_set('UTC'); set_time_limit(60); session_set_cookie_params(0, '/', '', false, true); require_once('Cache/Lite.php'); require_once('functions.php'); define('APP_NAME', 'online_chat'); define('MAX_CHAT_LIMIT', 100); /* レスポンスはテキストデータとして返す */ header('Content-Type: text/plain; charset=utf-8'); header('X-Content-Type-Options: nosniff'); session_start(); /* クライアントに渡す変数(真偽値) */ $response = false; /* Ajax通信でなければ終了 */ if (@$_SERVER['HTTP_X_REQUESTED_WITH'] !== 'XMLHttpRequest') { $message = 'invalid access'; format_error_log($message, __FILE__, __LINE__); echo $response; exit; } /* アクセスが room.php 経由でない場合終了 */ if (!isset($_SESSION['client_id'])) { $message = 'client id not found'; format_error_log($message, __FILE__, __LINE__); echo $response; exit; } /* POSTデータを読み込む */ $raw_post_data = @file_get_contents('php://input'); parse_str($raw_post_data, $params); $chat_name = $params['chat-name']; $chat_message = $params['chat-message']; $nonce = $params['nonce']; /* ノンスが異なっていたら終了 */ if (session_id() !== $nonce) { $message = 'invalid nonce'; format_error_log($message, __FILE__, __LINE__); echo $response; exit; } /* チャットデータの保存期間は24時間とする */ $options = get_cache_lite_options(array('lifeTime' => 86400)); try { /* Cache_Liteライブラリを初期化 */ $cache = new Cache_Lite($options); /* チャットデータを読み込む */ $chat_data = $cache->get('chat_data', APP_NAME); if ($chat_data === false || !is_array($chat_data)) { /* データが壊れている可能性があるので直前のデータで上書き */ $cache->save($_SESSION['chat_data_cache'], 'chat_data', APP_NAME); $message = 'chat data not found'; format_error_log($message, __FILE__, __LINE__); echo $response; exit; } /* ランダムな文字列を生成してチャットIDにする */ $chat_id = random_str(); $new_chat = array( 'id' => $chat_id, 'name' => $chat_name, 'message' => $chat_message, 'create_time' => floor(microtime(true) * 1000), ); array_unshift($chat_data, $new_chat); /* データ数が最大数を超えたら古い順に削除 */ $chat_data = array_slice($chat_data, 0, MAX_CHAT_LIMIT); /* セッション変数に直前のチャットデータを格納 */ $_SESSION['chat_data_cache'] = $chat_data; /* チャットデータを保存 */ $result = $cache->save($chat_data, 'chat_data', APP_NAME); if ($result === false || is_object($result)) { $message = 'failed to save'; format_error_log($message, __FILE__, __LINE__); echo $response; exit; } $response = true; echo $response; } catch (Exception $e) { format_error_log($e->getMessage, __FILE__, __LINE__); echo $response; }

まだありますが、省きます。

試したこと

XAMPPを使い、サーバーを立てて、room.phpを呼び出すことはできたのですが、
Warning: require_once(Cache/Lite.php): failed to open stream: No such file or directory in C:\xampp\htdocs\php_chat\room.php on line 12

Fatal error: require_once(): Failed opening required 'Cache/Lite.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\php_chat\room.php on line 12

とエラーが出て、そこからどうすればいいのかわかりません。
テーブル設計が必要なのかと考えたのですが、ソースコードをみてテーブル設計はできるものなのでしょうか?
そもそもこのオープンソースから自分のほうで実行することは可能なんでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

1T2R3M4

2021/10/19 00:52

エラーメッセージを理解して対応されたのでしょうか。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。