• 締切済み

Codeigniterの使い方を教えていただけないでしょうか

はじめまして。Codeigniter初心者です。 「CodeIgniter徹底入門」の書籍を参考にして、 XAMPP+Eclipse環境(Windows Vista、Linux(CentOS)) を構築してみました。 諸設定を行い、EclipseよりPHPプロジェクトを作成し、 Codeigniterをインポートしています。 XAMPPコントロールパネルよりApacheを起動後、 Vista、CentOSよりブラウザで下記のURLにアクセスし、 「CodeIgniterへようこそ!」ページが表示されるところまで 確認できました。 http://localhost/CodeIgniter/ その後、参考書(「コントローラで"Hello World!"を作る」)に 記載されているサンプルコード(下記参照)をそのまま使用して hello.phpを CodeIgniter/system/application/controllers 配下に作成しました。 hello.php --------------------------------------- <?php class Hello extends Controller { function index() { echo 'Hello World!'; } } ?> --------------------------------------- Vista、CentOSのEclipseより Codeigniter/system/application/controllers/hello.php を右クリックして「デバッグ」→「PHP Web ページ(1)」を選択して デバッグを開始しますと下記のエラー(Vistaでのもの)が 発生してしまいます。(Vista、CentOSともに) ------------------------------------------------------------- Fatal error: Class 'Controller' not found in C:\xampp\htdocs\CodeIgniter\system\application\controllers\hello.php on line 2 ------------------------------------------------------------- また参考書には、ブラウザで http://localhost/CodeIgniter/hello のURLにアクセスすると「Hello World!」が表示されると 記載されていましたが、下記のエラーが表示されます。 ---------------------------------------------------------------------- Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 localhost 04/17/09 20:00:04 Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8 ---------------------------------------------------------------------- フレームワークのControllerがうまく認識できていないようで、 設定上の問題のように思われますが、原因は特定できておらず、 困り果てた挙句、ご質問させていただきました。 お忙しいところ大変恐縮ですが、アドバイスいただければ幸いです。 何卒宜しくお願い申し上げます。

  • PHP
  • 回答数1
  • ありがとう数3

みんなの回答

noname#94983
noname#94983
回答No.1

ちょっと状況が見えないが。CodeIgniter本体がどう配置されているのかよくわからないので、常識的なことしか書けないが。 まず、config.phpを確認。正しく記述されているか。これは基本中の基本なので念のため。 http://localhost/CodeIgniter/index.php/hello/index にアクセスして正しく動いているか。もし、これで動いていて、http://localhost/CodeIgniter/hello で動かないのであれば、CodeIgniter自体は正常に動いている。単純に.htaccessなどURLのリライト設定あるいはhttpd.confのAllow from all設定などが正しく記述されていないということだろうと思う。その辺を再度確認する。 >Codeigniter/system/application/controllers/hello.php >を右クリックして「デバッグ」→「PHP Web ページ(1)」を選択して これは、動かないんでないか。そもそもCodeigniter/system/application/controllers/hello.phpのアドレスで公開されていないはず。http://localhost/CodeIgniter/helloとかで公開されているわけで、Codeigniter/system/application/controllers/hello.phpに対してデバッグしても動かないのは当たり前だろうと思う。その解説書に、その方法でデバッグできると書いてあったんだろうか。だとすると、どこかで何か勘違いしているような気がするんだが。

yhina999
質問者

お礼

お忙しい中、ご丁寧なアドバイスいただき有難う御座いました。 http://localhost/CodeIgniter/hello ではなく http://localhost/CodeIgniter/index.php/hello http://localhost/CodeIgniter/index.php/hello/index としてアクセスすると正常動作を確認できました。 大変助かりましたことをお礼申し上げます。

関連するQ&A

  • CodeIgniterでエラー

    CodeIgniterというフレームワークを利用してサイトを作成しようとしているのですが、うまく行きません。 index.phpというファイルに class Index extends CI_Controller { public function index() { $this->load->view('index'); } } としてviewフォルダにindex.phpというHTML主体のファイルを格納しました。 意図したページの表示が出ません。 色々調べたのですが、URLを簡素化する .htaccessの内容も RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?$1 [L] (A PHP Error was encountered Severity: Notice Message: Undefined property: Index::$load Filename: controllers/index.php Line Number: 7 というエラーが出ます) という例と RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] (No input file specified.というエラーが出ます) という例があり2パターンがありますが、どちらが正解でしょうか? まだはじめたばかりでわからない事ばかりで教えて下さい。

    • ベストアンサー
    • PHP
  • 「Laravel」上で自作コントローラが動かない

    続けての質問、申し訳ありません。 さくらレンタルサーバーにて「Laravel」を試しています。 「Laravel」を単純にサーバーにアップロードし、「http://○○.sakura.ne.jp/laravel/public/」にアクセスすると、Laravelのトップページにアクセスできるところまで確認しました。 次のステップとして、簡単なコントローラを作成してアクセスしたのですが、エラーになってしまいます。 -- 1.application/controllers に 以下の内容で「hello.php」を作成し、アップしました。 <?php class Hello_Controller extends Base_Controller{ public function action_index(){ echo "Hello World!"; } } 2.application 直下に存在する「routes.php」に以下の内容を追加し、アップしました。 Route::controller(array('hello','index')); -- これで、通常であれば「Hello World!」と画面に表示されるはずなのですが・・・ 添付画像のように404エラーが発生します。 通常、404エラーが表示される場合、Laravelのフレームワークにのっとった?エラー画面が表示されると思うのですが、IEのエラーになります。 また、同時に別サーバーのロリポップでも確認してまして、こちらは正常に「Hello World!」と表示されます。 ちなみに、さくらサーバーにて、routes.phpに直接 Route::get('/',function(){   echo 'Hello World!'; }); と書き込んだ場合は、問題なく表示されることを確認しております。 いったい何が悪いのかが検討もつきません。。 何度も申し訳ありませんが、ご教授、お願い致します。

    • ベストアンサー
    • PHP
  • codeigniterでサブフォルダの扱い

    codeigniterで開発をしようとしています。 まだ慣れていないのかうまくいかないことが多々あって困っています。 たとえば http://hogehoge.com/ のindex.phpを簡易的なURLで表示しようとしたときに .htaccessを RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) RewriteRule ^(.+)$ /index.php?/$1 [L] として、 config.phpのdefaultコントローラをwelcome.php としています。 で、問題なのが http://hogehoge.com/sub/ のindex.phpを表示させようとしたところ、 デフォルトコントローラの設定と.htaccessの設定により TOPページを表示してしまいます。 どのように対処したらいいでしょうか? 教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CodeIgniter/index.phpにアクセスすると真白なページが表示されてしまいます。

    はじめまして。CodeIgniter初心者です。 公開サーバのDocumentRoot配下にディレクトリ「CodeIgniter」を 作成し、その配下に開発環境からexportした「system」ディレクトリとindex.phpをアップロードしております。 /var/www/html/system/application/config 配下のconfig.phpとdatabase.phpの環境変数も 公開サーバ用に変更して、Apacheを再起動しております。 config.php -------------------------------------------------------------- ・・・ $config['base_url']= "http://公開サーバIPアドレス/CodeIgniter/"; ・・・ -------------------------------------------------------------- ブラウザより http://公開サーバIPアドレス/CodeIgniter/index.php にアクセスすると真白なページが表示されてしまいます。 /var/log/httpd 配下のaccess_logには ”GET /CodeIgniter/index.php HTTP/1.1”が出力され、 error_logには何も出力されておりません。 /var/www/html/CodeIgniter/system/logs 配下にもログファイルは作成されておりません。 phpinfo.php作成し、 http://公開サーバIPアドレス/CodeIgniter/phpinfo.php へアクセスすると、PHPのバージョン情報ページが表示されますので PHPは正常動作しているようです。 公開サーバにおける各サービスの主な設定(一部抜粋) Apache: httpd.conf ------------------------------------------ ・・・ LoadModule rewrite_module modules/mod_rewrite.so DocumentRoot:/var/www/html ・・・ ------------------------------------------ PHP: php.ini ------------------------------------------ ・・・ display_errors = On mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto ・・・ ------------------------------------------ php.ini ------------------------------------------ ・・・ LoadModule php5_module modules/libphp5.so AddHandler php5-script .php AddType text/html .php DirectoryIndex index.php ・・・ ------------------------------------------ お忙しいところ大変恐縮ですが、アドバイスいただければ幸いです。 何卒宜しくお願い申し上げます。

    • 締切済み
    • PHP
  • eclipseで実行したときだけエラーが発生する

    xampp1.6.6a + eclipse(zendPDT) で、PHP + mysql のコーディングをしたいと思っています。 一通りのセットアップをした後、下記のようなコードを組んで実行したところ、 ブラウザから直接アクセス(http://localhost/~ のURL)すると「接続成功!」と出るのですが、 eclipseから実行するとエラーが出てしまいます。 <?php include_once ("teisuu.php"); $my_Con = mysql_connect($db_host,$db_user,$db_pass); if ($my_Con == false){ die("MYSQLの接続に失敗しました。"); }else{ echo "接続成功!"; } ?> エラー: Fatal error: Call to undefined function mysql_connect() eclipse側で設定が何か足らないのだろうと思いますが、 どのようなことが考えられるでしょうか。

    • ベストアンサー
    • PHP
  • ZendFrameworkのindex.phpで

    【環境】 ZendFramework Version 1.11 PHP 5.3.8 ZendFrameworkの学習をしているのですが、見るサイトによってindex.phpが異なりそれらの違いが分かりません。 下記の3種類の実装はどのような違いが有り、どのようなときに使用するべきなのでしょうか? 1.Zend_Applicationのインスタンスを使用するもの $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run(); 2.Zend_Controller_Front::run()を使用するもの Zend_Controller_Front::run('../application/controllers'); 3.$front->dispatch();を使用するもの $front = Zend_Controller_Front::getInstance(); $front->setControllerDirectory('../application/controllers'); $front->dispatch();

    • ベストアンサー
    • PHP
  • Codeigniterでのviewへの受け渡し

    Codeigniterを使用しています。 databaseからデータを取得するまでは出来るのですが、 viewへの受け渡しと表示がうまくいきません。 データベースへの接続は出来ていますので、単にソースの不備 と思いますが、どこが悪いのかよく分かりません。ご教授頂きたく お願いいたします。 現在の仕様 【controllers/tel2.php】 <?php class Tel2 extends CI_Controller{ function index() { // データベースを初期化(データの取得:ActiveRecord) $this->load->database(); // SQLの実行 $this->db->select('id, prefecture_name,prefecture_name_en'); $query = $this->db->get('prefectures'); // 結果を表示 foreach( $query->result() as $row ){ $data['prefectures'] = array('id, prefecture_name,prefecture_name_en'); $this->load->view('tel2_view', $data); } } } ?> 【views/tel2_view.php】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>tel2</title> </head> <body> <table width="700" border="1" cellspacing="2" cellpadding="2"> <tr> <th scope="col">id</th> <th scope="col">県名</th> <th scope="col">en</th> </tr> <tr> <td><?=$row['id']?></td> <td><?=$row['prefecture_name']?></td> <td><?=$row['prefecture_name_en']?></td> </tr> </table> </body> </html> としてみました。 フレームは表示され、データの数だけ繰り返されているのですが、 肝心なデータの内容が下記のようになります。 【id欄】 A PHP Error was encountered Severity: Notice Message: Undefined variable: row Filename: views/tel2_view.php Line Number: 18 【prefecture_name欄】 Severity: Notice Message: Undefined variable: row Filename: views/tel2_view.php Line Number: 19 【prefecture_name_en欄】 Severity: Notice Message: Undefined variable: row Filename: views/tel2_view.php Line Number: 20 上記がデータの数だけ繰り返されます。(内容に変化なし) database接続は下記となります。 (xamppのためパスワードは設定していません) $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'root'; $db['default']['password'] = ''; $db['default']['database'] = 'tel'; $db['default']['dbdriver'] = 'mysql'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = FALSE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; いろいろ弄ってみたのですが、うまくいきません。 controllerを下記のようにするとデータが表示されますので、データの取得までは 出来ているようです。 viewへの受け渡しでミスがあるのだと思います。 <? class Tel2 extends CI_Controller{ function index() { // データベースを初期化(データの取得:ActiveRecord) $this->load->database(); // SQLの実行 $this->db->select('id, prefecture_name,prefecture_name_en'); $query = $this->db->get('prefectures'); // 結果を表示 foreach( $query->result() as $row ){ echo $row->id; echo $row->prefecture_name; echo $row->prefecture_name_en; } } } いろいろ試してみたのですがうまくいきません。 お手数ですがどこに間違いがあるのかご教授願います。 環境は以下のとおりです。 xampp for windowsXP codeigniter2.0.3 Apache/2.2.21 (Win32) PHP/5.3.8 mysql5.5.16

    • ベストアンサー
    • PHP
  • 1つのcakePHPで複数のサイトを作成したい

    1つのアプリ(cakePHP)で、複数のサイトが入っている物を作成したいです。 URLであらわすと下記のように、みかんコンテンツとりんごコンテンツが1つのサイトの中に別々にある感じです。 http://ドメイン/mikan/top/index/ http://ドメイン/ringo/top/index/ (http://ドメイン/コンテンツ名/コントローラー名/ファンクション名/) また、ファイル数が膨大になるため、下記のようにフォルダ分けをしたいです。 ●controllersフォルダ controllers   └mikan     └top_controoler.php   └ringo     └top_controller.php ●viewsフォルダ views   └mikan     └top      └index.html   └ringo     └top      └index.html ※controllerとview以外のファイルは共通で使いたい こうしたいのですが、ルーティングなどをいじっても上手くいかず、現在は下記のようにしています。 http://ドメイン/mikan_top/index/ http://ドメイン/ringo_top/index/ (http://ドメイン/コントローラー名/ファンクション名/) ●controllersフォルダ controllers   └mikan     └mikan_top_controoler.php   └ringo     └ringo_top_controller.php しかし、これだとURLがかっこ悪いので、最初に示したURLでアクセスできるようにしたいのです。 何かいい方法は無いでしょうか? controllerやviewのファイル名、クラス名などは複雑になっても構いません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP環境について

    PHP初心者です。 PHPの環境を作り、Windows環境のローカル端末にて開発をはじめようと思っているのですがApache HTTP Server 2.0.55とXAMPPをインストールし、XAMPPコントロールパネルからApacheのサービスを起動したにもかかわらず、下記内容のPHPファイルを作成してC:\Program Files\xampp\htdocs\info.php に保存してもphpの情報が表示されません(404Error)。 ーーーーーーーーー <?php phpinfo(); ?> ーーーーーーーーー また、XAMPPはhttp://localhost/xampp/index.php のアドレスでWebベースのXAMPPコントロールパネルが表示されるはずですが、表示されません(404Error)。 おそらくPHPが正常に動作していない(起動していない)ような気がするのですが、どのような原因が考えられますでしょうか?? ちなみにhttp://localhost/のアドレスだと「あなたの予想に反して・・・」の表示が確認できます。 また、ApacheがインストールPHP4⇔PHP5の切り替えはできます。 どんなことでも結構なのでご教授願います。

    • ベストアンサー
    • PHP
  • PHPEclipseでコードを実行できない

    PHPEclipseで書いたコードをEclipse上から実行しようとすると、 The selection cannot be launched, and there are no recent launched. と出て実行できません。原因にはどのような可能性があるでしょうか? 実行は、上部ツールバーの再生ボタンのような緑のアイコンから行っています。 また、関連があるかわかりませんが、 エディタ内を右クリック>表示>PHPブラウザの挙動もうまくいきません。 プロジェクト名「project」、phpファイル「file.php」だとすると、 http://localhost/htdocs/project/file.php が参照されてしまいます。本来ならば 、 http://localhost/project/file.php が参照されるべきだと思うのですが‥ ドキュメントルートがうまく取得されていないというか、 ワークスペースに設定したパスのトップディレクトリから取得しているような扱われ方をします。 これも原因は同じなのでしょうか。ドキュメントルートなどは下記のように設定しています。 Eclipseのバージョンや設定情報は以下の通りです。 xamppを使っており、httpd.confで特別な設定は行っていません。 【Eclipse】3.4.0 【PHPEclipse】1.2 【プロジェクトデフォルト】 PROJECT URI:http://localhost ドキュメントルート:C:/xampp/htdocs 【ワークスペース】C:\xampp\htdocs ネット上の情報を参考にしながら色々と試してみたのですが、手詰まりになってしまいました。 どなたかお使いになっている方、お時間をお借りできませんでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう