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

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

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

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

2回答

3855閲覧

CodeIgniter3を使用してのUnityのサーバー通信(サーバ側)の404問題

miya_

総合スコア6

PHP

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/05/14 11:34

###前提・実現したいこと
Unityでのサーバー通信を試しております。
サーバーはさくらレンタルサーバーを利用しております。

CodeIgniter3をインストールしてさくらファイルマネージャーの任意の場所に置き、
ユーザーガイドを観ながら実装していったのですがいざ通信の際になると404エラーが出てしまいます。

サーバー側の階層
さくらURL
-api (CodeIgniter3フォルダの名前を変えた)
--application
---controllers
----User.php (自分が作ったファイル)
---models
----UserCreate.php (自分が作ったファイル)

.htaccessファイルの描き方については以下のサイトを参考にしました
http://keneffc.hatenablog.com/entry/2015/08/05/140542

###発生している問題・エラーメッセージ
404エラー

エラーメッセージ

###該当のソースコード

php

1<?php 2 3class User extends CI_Controller 4{ 5 public function create() 6 { 7 $this->load->model('createuser', 'creator'); 8 9 $post_data = $this->input->post(); 10 $this->creator->create($post_data); 11 } 12}

php

1<?php 2class CreateUser extends CI_Model 3 { 4 public function __construct() 5 { 6 parent::__construct(); 7 } 8 9 public function create($post_data) 10 { 11 $this->load->database(); 12 13 $id = uniqid(); 14 $name= $post_data['user_name']; 15 16 $data = array( 17 'id' => $id, 18 'name' => $name, 19 ); 20 21 $query = $this->db->insert("user", $data); 22 } 23}

php

1.htaccess 2 3RewriteEngine on 4 5RewriteCond $1 !^(index\.php|.+\.css$|.+\.js$|.+\.png$|.+\.jpg$|robots\.txt) 6RewriteRule ^(.*)$ /api/index.php?$1 [L] 7 8<IfModule authz_core_module> 9Require all denied 10</IfModule> 11<IfModule !authz_core_module> 12Deny from all 13</IfModule>

php

1config.php 2 3/* 4|-------------------------------------------------------------------------- 5| Base Site URL 6|-------------------------------------------------------------------------- 7| 8| URL to your CodeIgniter root. Typically this will be your base URL, 9| WITH a trailing slash: 10| 11| http://example.com/ 12| 13| WARNING: You MUST set this value! 14| 15| If it is not set, then CodeIgniter will try guess the protocol and path 16| your installation, but due to security concerns the hostname will be set 17| to $_SERVER['SERVER_ADDR'] if available, or localhost otherwise. 18| The auto-detection mechanism exists only for convenience during 19| development and MUST NOT be used in production! 20| 21| If you need to allow multiple domains, remember that this file is still 22| a PHP script and you can easily do that on your own. 23| 24*/ 25$config['base_url'] = 'http://testtest.sakura.ne.jp/api/'; 26 27/* 28|-------------------------------------------------------------------------- 29| Index File 30|-------------------------------------------------------------------------- 31| 32| Typically this will be your index.php file, unless you've renamed it to 33| something else. If you are using mod_rewrite to remove the page set this 34| variable so that it is blank. 35| 36*/ 37$config['index_page'] = '';

###試したこと
Unity側からのUrlの変更
http://testtest.sakura.ne.jp/api/user/create
http://testtest.sakura.ne.jp/api/User/create
両方ともだめでした。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

さくらサーバーがわでの操作やPHP、CodeIgniter3での操作で足りないところなどがあれば教えていただきたいです、
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

CodeIgniter3 を使用するのであれば、ドキュメントがそれなりに翻訳されているのでそちらを参照したほうが良いです。
CodeIgniter へようこそ

チュートリアルが終われば、どこが間違っていたのか探せるようになると思います。
*なんとなくですが、DocumentRootとディレクトリ構成が合致していないのではないかと思います。

また、できれば、公開ディレクトリを制限したほうが良いので、以下を参照して下さい。
CodeIgniter Composer Installer

投稿2017/05/14 23:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

miya_

2017/05/15 17:25

何故か自分の環境ではできないので自分の行った手順を1から書きます。 おかしなところああればご指摘いただければと思います。 また、今回はXamppでやりました。(そのような記事が多かったので) 1,「http://pneskin2.nekoget.com/codeigniter/3/user_guide/installation/downloads.html」で「CodeIgniter v3.0.4」をダウンロードしました。 2、「Xampp」のルートディレクトリ「C:\xampp\htdocs」の下に「project_01」というフォルダを作成しました。 3、作成した「project_01」フォルダ内にCodeIgniter v3.0.4を解凍してできたフォルダを入れました。 また、フォルダ名を「api」としました。 ここまでで、「C:\xampp\htdocs¥project_01\api」というところまでできました。 4、Xamppを起動して、ブラウザ上で「http://localhost/project_01/api/」と打ってアクセスするとCodeIgniterのページが表示されました。(ここまではチュートリアルでもありました) 5、「api」フォルダはCodeIgniterのフォルダを改名したので中には「application」「system」「index.php」などがあります。そして、「api/application/.htaccess」ファイルに上記でご回答にありました通り、 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /project_01/api/index.php?/$1 [L] と書きました。 6、また「api/application/config/configg.php」内の「$config['index_page'] = 'index.php';」を「「$config['index_page'] = '';」」に変更しました。 7、そのあと、質問にもありますように「api/application/controllers」内にUser.php、「api/application/models」内にUserCreate.phpを作成しました。 8、ブラウザ上にて「http://localhost/project_01/api/user/create」にアクセスしようとすると、 Object not found!要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。Error 404 と表示されてしまいます。 Xamppの「C:\xampp\htdocs」はさくらサーバーのファイルマネージャーの「...../www」と同じだと認識しています。ルートディレクトリという意味で。 上記の事柄で間違っている点などあればご指摘ください。
退会済みユーザー

退会済みユーザー

2017/05/15 22:02

ネコさんのところの翻訳使ってるんですね。そちらの翻訳は日本ユーザ会の翻訳へ取り込んでいたはずなので、日本ユーザ会のモノを参考にされたほうが翻訳された範囲が広いと思います。 本題ですが、私は Apache を使用していないので、.htaccess の書き方に詳しくないのですが、公式とは違う方法のようです。 http://codeigniter.jp/user_guide/3/general/urls.html RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] という記述があります。 RewriteEngine On RewriteBase /project_01/api RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ index.php/$1 [L] でイケる気がします。 http://localhost/project_01/api/index.php で、welcome ページが表示される確認の後、 http://localhost/project_01/api/welcome が正常に動けば、.htaccess の挙動が意図通りである確認ができます。 これが正常でなければ、.htaccess に問題があります。 .htaccess が正常に動作していて、404 が発生するのであれば、ファイル名とクラス名が間違っている可能性があるので、再確認して下さい。
guest

0

ルートディレクトリにインストールした場合

RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ index.php?/$1 [L]

ルートのサブディレクトリ”hoge”にインストールした場合

ルートのサブディレクトリ”hoge”にインストールした場合 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /hoge/index.php?/$1 [L]

投稿2017/05/14 13:35

編集2017/05/15 00:20
yuki84web

総合スコア1857

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

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

miya_

2017/05/14 15:37

回答ありがとうございます。 routes.phpは自分用にURLをカスタマイズすしたいわけではなかったら特に修正しなくてと認識していました。 またCreateUser.phpのcreateメソッドに渡すパラメータは「http://testtest.sakura.ne.jp/api/user/create 」 でUserクラスのcreateメソッド内で取得($post_data = $this->input->post();)している認識です。 route.phpは修正する必要があるのでしょうか。 また、それ以外に間違っているところがあるでしょうか。
yuki84web

2017/05/15 00:22

さくらの環境でチュートリアルをやっていました。私はhtaccesを上記のようにしてうまくいっていますので試してみてください。あと、参考にされたサイトは少し情報が古いかもしれませんね。
miya_

2017/05/15 17:22

何故か自分の環境ではできないので自分の行った手順を1から書きます。 おかしなところああればご指摘いただければと思います。 また、今回はXamppでやりました。(そのような記事が多かったので) 1,「http://pneskin2.nekoget.com/codeigniter/3/user_guide/installation/downloads.html」で「CodeIgniter v3.0.4」をダウンロードしました。 2、「Xampp」のルートディレクトリ「C:\xampp\htdocs」の下に「project_01」というフォルダを作成しました。 3、作成した「project_01」フォルダ内にCodeIgniter v3.0.4を解凍してできたフォルダを入れました。 また、フォルダ名を「api」としました。 ここまでで、「C:\xampp\htdocs¥project_01\api」というところまでできました。 4、Xamppを起動して、ブラウザ上で「http://localhost/project_01/api/」と打ってアクセスするとCodeIgniterのページが表示されました。(ここまではチュートリアルでもありました) 5、「api」フォルダはCodeIgniterのフォルダを改名したので中には「application」「system」「index.php」などがあります。そして、「api/application/.htaccess」ファイルに上記でご回答にありました通り、 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /project_01/api/index.php?/$1 [L] と書きました。 6、また「api/application/config/configg.php」内の「$config['index_page'] = 'index.php';」を「「$config['index_page'] = '';」」に変更しました。 7、そのあと、質問にもありますように「api/application/controllers」内にUser.php、「api/application/models」内にUserCreate.phpを作成しました。 8、ブラウザ上にて「http://localhost/project_01/api/user/create」にアクセスしようとすると、 Object not found!要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。Error 404 と表示されてしまいます。 Xamppの「C:\xampp\htdocs」はさくらサーバーのファイルマネージャーの「...../www」と同じだと認識しています。ルートディレクトリという意味で。 上記の事柄で間違っている点などあればご指摘ください。
yuki84web

2017/05/15 22:54 編集

xamppは少し特殊なので、もしかしたら別の設定が必要かもしれませんね。CodeIgniter公式にフォーラムがあるので、そこで聞いてみるのもアリです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問