仕事と子育てを両立。働くママを、もっと笑顔に!

はじめまして。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がうまく認識できていないようで、
設定上の問題のように思われますが、原因は特定できておらず、
困り果てた挙句、ご質問させていただきました。

お忙しいところ大変恐縮ですが、アドバイスいただければ幸いです。
何卒宜しくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (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に対してデバッグしても動かないのは当たり前だろうと思う。その解説書に、その方法でデバッグできると書いてあったんだろうか。だとすると、どこかで何か勘違いしているような気がするんだが。
    • good
    • 0
この回答へのお礼

お忙しい中、ご丁寧なアドバイスいただき有難う御座いました。

http://localhost/CodeIgniter/hello
ではなく
http://localhost/CodeIgniter/index.php/hello
http://localhost/CodeIgniter/index.php/hello/index
としてアクセスすると正常動作を確認できました。

大変助かりましたことをお礼申し上げます。

お礼日時:2009/04/17 23:37

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCodeIgniterでエラー

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パターンがありますが、どちらが正解でしょうか?
まだはじめたばかりでわからない事ばかりで教えて下さい。

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 ^...続きを読む

Aベストアンサー

まず、controllers/index.php ですが、PHPではクラス名と同名のメソッドはコンストラクタ扱いされます。
従って、「 Index 」クラスで「 index() 」メソッドを定義する場合は、「 __construct() 」を定義しないと親クラスである「 CI_Controller 」のコンストラクタが処理されません。

class Index extends CI_Controller {

public function __construct()
{
parent::__construct();
}

public function index()
{
$this->load->view('index');
}

}

.htaccessですが、
本家のマニュアルに記載されている「 mod_rewrite 」の記述は間違っています。
正しくは↓です。

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

「 RewriteCond 」の「 (index 」の前に「 / 」スラッシュが必要です。

詳しくは
http://www.ci-guide.info/basic/controller/
http://www.ci-guide.info/basic/uri/
こちらのサイトを参考になさると良いかもしれません。

参考URL:http://www.ci-guide.info/

まず、controllers/index.php ですが、PHPではクラス名と同名のメソッドはコンストラクタ扱いされます。
従って、「 Index 」クラスで「 index() 」メソッドを定義する場合は、「 __construct() 」を定義しないと親クラスである「 CI_Controller 」のコンストラクタが処理されません。

class Index extends CI_Controller {

public function __construct()
{
parent::__construct();
}

public function index()
{
$this->load->view('index');
}

}

.htaccessですが...続きを読む

QCodeIgniter/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
・・・
------------------------------------------

お忙しいところ大変恐縮ですが、アドバイスいただければ幸いです。
何卒宜しくお願い申し上げます。

はじめまして。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アド...続きを読む

Aベストアンサー

これだけだとなんともいいようがないな。
エラーが出ず、ただ真っ白いページが出ているのだろうか。で、ページそのものは存在する、と。

となると、途中でエラーが起こっている気がする。例えば、php.iniで、

display_errors = Off

とかになってて、エラーが非表示になっているため気づかないとか。

あとは、「開発環境からexportした「system」ディレクトリとindex.php」というのがちょっと気になるから、再度サイトから最新版をダウンロードして入れなおしてみるとか。そのぐらいしか思いつかないな。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QPHPでjavascriptのalert文のようにデバッグ

こんにちは

現在、Flash からPHPにデータを渡して、それがPHPにわたっているかどうかを調べたいのですが、echo文などで出力してもそれがブラウザで表示されないので、どうしたらよいかわかりません。。。orz

javascriptのalert文のように警告ウィンドウを利用して変数の値などを調べる関数はあるのでしょうか?
また、なにか他によい方法がありましたら教えていただけるとありがたいです。

よろしくお願いします

Aベストアンサー

var_dump(変数)

echo で値が出ないということは、おそらく値が null もしくは空文字だと思います。

参考URL:http://jp.php.net/manual/ja/function.var-dump.php

QPHPでPostgresqlへアクセス

OSはFedoraCore3を使用しています。
PHP5で作成したプログラムでPostgresqlへアクセスするのですが,全く応答がありません。

ブラウザで表示後、ソースを見ると
<html><body></body></html>
としか出ません。
ということはpg_connect("host=****...")がエラーの原因と考えています。
上記のプログラムの上にecho"ああ"と入力すると、ソースには「ああ」と表示があります。

PHPでFTP接続のプログラムを作成して実行するとこれは問題なく動きます。

やはり,Postgresqlの設定がおかしいのでしょうか?それともアクセスの方法が間違っているのでしょうか?

ホント困っています。よろしくお願いします。

Aベストアンサー

>Call to undefined function pg_connect()

定義されていないpg_connectという関数が呼ばれてます(使われてます)って意味ですね。

PHPでのpostgresql操作用モジュールが入っていない可能性が高いです。
ちょっとパッケージ名がそのものズバリはFedoraのは分かりませんが、pgsql.soがインストールされていないか、pgsql.soを読み込む設定になっていないのでしょう。

pgsql.soがまずあるかどうか確認してください。
なければ、インストールしてください。
あった場合、またはインストールした場合、php.iniに
extension = pgsql.so
を追記してください。

その後、apacheを再起動するなりして、php.iniの変更を適用させてください

QリダイレクトでPOST

教えてください。

リダイレクトの際、POSTで次のページにデータを渡すことは可能でしょうか?

GETだと
header("Location: "a.php?no=".$no);
と、問題なくできるのですが、
できれば、パラメータを隠したいと思います。

以上ですが、よろしくお願いします。

Aベストアンサー

多分できないです。
それに、結局クライアント側に情報を送信しているのだから、POSTにしたところでパラメータを隠した事にはならないですし。
本当に隠すならサーバ側でセッション情報を引き継ぐような形にしないとダメでしょう。

AJAXのかたちにして、ページ遷移を見えなくするというのが手っ取り早いかも。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む


人気Q&Aランキング