アプリ版:「スタンプのみでお礼する」機能のリリースについて

xampp 1.7.0を使用していました(このバージョンは使えた)が、
この度、バージョンアップをしようと思い、
いったん、1.7.0をアンインストールし、1.7.3をインストールし直しました。
(WindowsXP SP3 を使用。インストールドライブはC:\xamppです。)

その結果、
Apacheのみ起動しません。
他の、MySql、FileZilla、Mercuryは起動します。

Apacheを start しようとすると、いったんは running となるのですが、
またすぐに(2秒ほどで)、 stop 状態に戻ってしまいます。

で、その理由をネット上をくまなく検索してみたのですが、
どの対処法もダメでした。

例えば…
ポート80がフリーになってないのではないか?
(Skypeの件など)
→問題なしです。xampp-portcheck.exeなどで、
ポート80がFreeであることは確認できています。

また、Window ファイヤーウォールの件も、オフにしました。

インストールに失敗したかもしれないと思い、
一度、1.7.3をアンインストールし、再インストールを試みましたが、
それでも、やはり変わりませんでした。

ノートンインターネットセキュリティを使っていますが、
これもいったんすべて切ってトライしてみましたが、やはりこれもダメ。

パソコンの再起動もしましたが、これもダメ。

もう万策尽きました。

どなたか、ご助言をお願い致します。

A 回答 (9件)

実はもう、こちらもXAMPPが正常に起動できそうなアドバイスは無くなってしまいましたね・・・


ちなみに、古めのXAMPPにあるApacheは、実行ファイルが「apache.exe」、新しいXAMPPにあるApacheは、「httpd.exe」。
何か、Windows標準のファイアウォールとか、そのたぐいで、止めてるということも無いですよね。
(xampplite1.7.3が起動するっていうのであれば関係ないでしょうが・・・)


で、XAMPPに含まれるPHPのバージョンは、少なくとも、「PHP5.x.x」ですので
どのバージョンのXAMPPを使おうが、SQLite3は使えるはずです。PDOがPHPに標準搭載なので。

と言いつつ、ちょっと調べてみたら、1.7.0とかだとXAMPPパッケージに含まれる、php.iniでSQLite3が無効に設定されているので、

;extension=php_pdo_sqlite.dll
と書かれている部分をコメントイン
extension=php_pdo_sqlite.dll

して、Apache再起動すれば使えます。


■代替案で書きたかったこと
Apacheではない、別のWebサーバをインストールして、PHPも本家からダウンロードしてきてインストールすれば
普通に使えるのではないか、といったことでした。

この回答への補足

結果報告を致します。

例のコメントインはうまくいきました。
恐らく、Apacheの再起動をしなかったのか、
したけれども、sqliteの文字を見逃したか、のどちらかだと思います。

で、再起動後、phpinfo()の結果にしっかり反映されました。
ただ、今回は1.7.0ではなく1.7.1で試しました。
(1.7.0でも結果は同じでしょうけれども。)

次に、PDOでエラーが出る件は、
これは、単純にDBパスの書きミスでした。
リモートとローカルでパスを書き換えなければならないところ、
うっかり、それをそのままにしていたため、
「そんなDBは開けません」というようなエラーが出ていました。

→これをPDOのドライバが起動しない、
というエラーとして私は前回、読み違えたのかもしれません。
(sqlite3が使えているかどうか半信半疑だったため、
このような読み違えをしたのだと思われます。)

そこで、パスを書き直しましたら、上記エラーは消えました。

ただし、またさらにエラーが発生し、
今度は、
「そんなテーブルはないよ」
というエラーでした。

リモートでは問題なくアクセスできているテーブルであることから、
これはおそらく、
「リモートで作成したDBをローカルで開く場合、エラーが発生することがある」
といった問題なのではないかと思います。

参考:http://detail.chiebukuro.yahoo.co.jp/qa/question …

上記ページの現象と、まさに同じことが起き、また辿った結果も同じです。
つまり、ローカルではローカル用に新たにDBをCREATEして対処したわけです。
その結果、上手く開けましたし、インサートもできました。
これは、どういうわけで起こる問題なのでしょうね。
(もし、何かご存知でしたら、最後にご教示いただけますと助かります。)

-------------------------
おかげさまで、
本来したかったことができるようになりましたので、
とりあえずは、問題解決です。
Apache1.7.2以降のバージョンが相変わらず使えないことには変わりありませんが、
これは横に置いて置くことに致します。

この度は非常に助かりました。
ありがとうございました!
また宜しくお願い致します。

補足日時:2010/12/10 01:36
    • good
    • 0
この回答へのお礼

お世話になっております。

>Windows標準のファイアウォール

これも既に「無効」にしてあります。

>xampplite1.7.3が起動するっていうのであれば関係ないでしょうが・・・

そうですね。
liteとの違いの部分に、「正常起動しない原因が潜んでいる」のではないかと思っています。

>どのバージョンのXAMPPを使おうが、SQLite3は使えるはず

もしそういうことであるなら、1.7.0でも良いのですが、
本件にぶち当たる前に、まずトライしたことが、実は、

コメントイン
extension=php_pdo_sqlite.dll
だったのです。

これをしまして、phpinfo()でPDOとか、sqliteとか、PDO SQLiteだかの項目を
チェックしたのですが、
sqlite2という表示はあっても、sqliteという表示がなかったため、
sqlite3は使えないのか、とその時は思いました。

また、実際にも、PDOでsqlite3を使うプログラムを書き、
動かそうとすると、sqlite3のドライバーが見当たらないよ?
というようなfatal errorが出たように記憶しています。

そんなわけで、アップグレードを試みたわけですが、
本当に、上記のコメントインをするだけで、
sqlite3がPDOで使えるようになるのであれば、
1.7.1か何かに戻しても良いと思っています。

>して、Apache再起動すれば使えます。

これをしたかどうか忘れましたが(したように思うのですが…)、
もう一度、トライしてみようかと思います。
もし、これがダメな場合、
その原因はどこにあるんでしょうね…。
Apache1.7.3がインストールできない理由とはまた別の問題だとは思いますが…。
まぁ、とりあえず、コメントインをし、Apacheの再起動をしてみます。

>Apacheではない、別のWebサーバをインストールして、
>PHPも本家からダウンロードしてきてインストール

さすがにこれは険しい道のりになりそうなので、
最終手段にしておきたいなと思います。笑

以上を踏まえ、色々と試し、またご報告致します。

お礼日時:2010/12/09 22:31

コマンドラインから、プログラムを走らせると、コマンドを叩いた場所が、カレントディレクトリになったりするので、


相対パス記法だと、パスが上手く引けない場合があったりするのですが、それではなさそうですかね。
また、パスの中にスペースや、マルチバイト文字列(日本語とか)が含まれていたりするのも、問題があった気がします。

そこら辺を解決しつつ、実際に走らせるスクリプトの位置から、データベースのパスを引く場合に、

dirname関数と、__FILE__定数とかを使うとある程度正確なものが出ます。

■__FILE__定数
この定数には、今走っているスクリプト(今回だと「db_access.php」)の絶対パスが記述されています。

■dirname関数
あるファイルのフルパスを引数にしてやることで、そのファイルの属しているディレクトリ名までのフルパスを返します。

■DIRECTORY_SEPARATOR
今現在使用しているOSのディレクトリのセパレータ、Windowsだったら「円マーク」、Linuxとかだったら「/(スラッシュ)」
を返します。

<?php
//とりあえず、db_access.phpと同階層にある「hoge.sqlite3」を引くなら、
define('DS', DIRECTORY_SEPARATOR); //定数が長いので略称の定数をつくっておく(CakePHPのパクリ)

//まずスクリプトのディレクトリを取得する
$path = dirname(__FILE__);
//ディレクトリ名を取得したらその後ろにDB名をくっつけてやって、DBの置いてある
//パスのフルパスが完成
$path .= DS . 'hoge.sqlite3';

$pdo = new PDO("sqlite:" . $path); //パスをPDOに渡してやる


?>

というのが、割と正しいパス表現になります。
DIRECTORY_SEPARATORを使わないで表記すると、「円マーク」を「円マーク」でエスケープしなければならなかったり
そもそもレンタルサーバとかにUPするときにパス表現をかえなきゃいけなかったりで結構面倒くさいですし。

これで一度試してみてどうでしょう。
最初に書いたように、パスにスペースや日本語が含まれているなら、
一度、「c:\scripts」など簡単なディレクトリを作ってそこで試してみるとか。
Webサーバのルートも、xampp\apache\httpd.confあたりをいじれば変えられるので、
変えてみてもいいかもしれません。

この回答への補足

//--------------------------------------
//DB関連の定義
define('DIR_DB',addslashes(dirname(__FILE__).DIRECTORY_SEPARATOR));
define('DB','hoge.sqlite3');

//パスのフルパスが完成
$path = DIR_DB.DB;

$pdo = new PDO("sqlite:" . $path); //パスをPDOに渡してやる
//---------------------------------------
このようにしたら、上手くいきました。

で、何が問題だったのか。

実は、意外や意外。
PDOに渡す「dsn」の記述にミスがあったのです!

new PDO("sqlite:" . $path)のカッコの中の、

"sqlite:"の部分を、レンタルサーバ上では、

"sqlite:/" として動かしていました。(実際に動いていました。)
それをそのままローカルに持ってくると、前述のエラーが吐かれます。

そこで、

"sqlite:/" → "sqlite:" とすると、キレイサッパリ解決!

確かに、ローカルにおいて、
"sqlite:/C:\xampp\~~" という表記はオカシイですものね。

私は、PDO関連のDB処理は、自作クラスにて行っており、
その中を覗いてバグを探すことは通常あまりしないため、
余計な「/」の発見に手間取りました。
また、dsn というものをよく理解していなかったために、
それをブラックボックスにしてしまっていたことも、
発見を遅らせる原因の1つだったかもしれません。
以上、
最後まで、私の愚問にお付き合い頂き、
本当にありがとうございました。
非常に助かりました!!!
スッキリ!
(ただし、Xampp1.7.3のApacheが起動しない件は、スッキリしていませんが。笑)

補足日時:2010/12/14 03:40
    • good
    • 0
この回答へのお礼

解決しました!
と、まずお伝えしておきます。
その詳細については、補足の方で、させて頂きますね。
やはり、パス表記にミスがありました。
今回も回答して頂き、ありがとうございます。
解決したことをお伝えするのに、新しく回答して頂けるのを待っておりました。
回答を締め切ってしまっても良かったのですが、
やはりフィードバックは大事ですから、待たせて頂きました。
お手数お掛けして、申し訳ありませんでした。

お礼日時:2010/12/14 02:46

やっぱり咬み合ってなかったですね、ごめんなさい。



>例
>hogehogeディレクトリ内
>hogehoge/db_hoge.sqlite3  //データベース
>hogehoge/script_hoge.php  //データベースを操作するphpスクリプト

>script_hoge.php の中では、
>define('DB','db_hoge.sqlite3');

これを例にしたとして、
<?php
//とりあえずエラーが全部でるようにしとく
error_reporting(E_ALL);

define('DB', 'db_hoge.sqlite3');


//まずDBが存在するか確認
if(!file_exists(DB){
echo "dbがないよ";exit();
}


$pdo = new PDO('sqlite:' . DB);
//なにかダメだったときにException(エラー)を投げるようにする
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//適当なSQLを投げてみる
$pdo->query("SELECT * FROM your_table");

?>

もし、データベースにアクセスしていて、そのデータベースが、SQLite3のデータベースでないか、バージョン違いの場合、
「Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 26 file is encrypted or is not a database'」
とかといったエラーメッセージが現れます。

どうなるでしょうか。

また、
http://reddog.s35.xrea.com/wiki/TkSQLite.html
こちらのサイトに、Windowsで動作する、SQLite用のGUIクライアントがあるので、これの最新版
下のほうにある、
tksqlite-0.5.8-win32-bin.zip
ってやつをダウンロードして、データベース開いてみてください。
左下に「Version」と表記され、バージョン情報が出てきます。

また、スクリプトを見直して、
<?php

$pdo = new PDO('sqlite2:' . DB); //sqlite2で開いてる

?>
とか、レンタルサーバ側においたスクリプトでやってないかとか確認してみてください。

※SQLite3.xxの、3のマイナーバージョン側の違いで開けないというのはあるのかもしれませんが・・・わかりません

この回答への補足

お礼で書いたことに補足させて下さい。

if(file_exists(C:\\xampp\\htdocs\\xampp\\db_dir\\hoge.sqlite3)){
echo 'DBはあります';
}
else 'DBはありません';

として、パスの正誤判定をしますと、「DBはあります」となりますから、
ファイルパスの表記自体は正しそうです。

しかし、そのファイルパスを、PDOに渡すと、
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in C:\xampp\~~~~
これが吐かれます。

PDOには、このパスは理解できないのでしょうか?
問題の根源は、おそらくココにあります。

補足日時:2010/12/13 03:23
    • good
    • 0
この回答へのお礼

レスポンスが遅れまして、申し訳ありません。
色々と試行錯誤しておりました。

リモートとローカルでSQLiteのファイルが開けたり開けなかったりという問題ですが、
この問題の原因はほぼ間違いなく、「パス表記」にありそうです。
(つまり、マイナーバージョンなどのバージョン違いによる問題ではなさそうだ、ということです。)

具体的に、何が分からないかと言うと、
DBにアクセスするPHPスクリプトファイルの中で、
$db = 'hoge.sqlite3';
と書いた場合、
そのDBファイルと、スクリプトファイルの階層は、「同階層」だという認識で
私は、いるのですが、
どうもこれは「必ずしも正しくはない(?)」ようなんです。
私の環境では、
$db = 'hoge.sqlite3';とした場合、そのDBファイルの存在場所は、
C:\hoge.sqlite3
という、「C:\~」の階層(Cドライブ直下の階層)になっているのです。

私としては、PHPスクリプトファイルと同階層にDBを作成したり、
また、その同階層にあるDBファイルにアクセスしたりしたいので、
「同階層のパス表記」をまず確実に理解し、
その上で、そのパス表記をもとに、DBの作成やアクセスをする、
という方向で、問題解決を図りたいと考えております。

そこで、同階層の表記として、
'xampp\\htdocs\\xampp\\db_dir\\' とか、
'C:\\xampp\\htdocs\\xampp\\db_dir\\' なんて書き方を試したのですが、
どちらもダメでした。
(DBの存在場所の最終理想形 → C:\xampp\htdocs\xampp\db_dir\hoge.sqlite3)

※ちなみに、
phpスクリプトファイルの存在場所は
C:\xampp\htdocs\xampp\db_dir\db_access.php
になります。

話を戻しまして、
前者の書き方だと、「DBがないよ(if(!file_exists(DB)){~~の分岐)」と言われ、
後者だと、
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in C:\xampp\~~~~
というエラーが吐かれます。
(※前者は、自作のデバグコードです。)

「C:\~」というパス表記だと怒られるのでしょうか?
このような場合、一体、どう書けば、
「同階層のパス」は得られるのでしょうか。

これさえ解決すれば、すべて丸く収まる気がします。
何度もすみません、また宜しくお願い致します。

お礼日時:2010/12/12 22:06

>リモートでは問題なくアクセスできている


リモートとは、どういう事でしょう。

参照先のURL(Y!知恵袋)見てみましたが、SQLiteManagerを使ってデータベースファイルを生成した、ということでしょうか。

XAMPPの場合、「c:\xampp」にインストールした場合は、
「c:\xampp\htdocs」がWebのルートディレクトリになりますが、
SQLiteManagerを
c:\xampp\htdocs\sqlitemanager
にインストールされた場合、デフォルト設定で「hoge.db」というデータベースを生成した場合、
c:\xampp\htdocs\sqlitemanager\hoge.db
と作成されます。

とりあえずコレを、
c:\xampp\htdocs\myapp\index.php
というPHPファイルから呼びたい場合、

<?php
define('DATABASE', dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'sqlitemanager' . DIRECTORY_SEPARATOR . 'hoge.db');

//というようにフルパスで定数でもつくっておいて、

$pdo = new PDO('sqlite:' . DATABASE);

//などといった感じで呼び出す。

?>

質問された内容と全然噛み合ってなかったらごめんなさい。
    • good
    • 0
この回答へのお礼

回答有り難うございます。
私の説明に分かりにくい点があり、申し訳ありません。

>リモートとは、どういう事でしょう

リモートサイト、という意味です。
その逆が、ローカル(ローカルサイト)です。
DreamWeaverにそういった言葉がありまして、それをそのまま使わせて頂きました。

具体的には、リモートはレンタルサーバー上となります。
一方、ローカルは自分のPCです。

>SQLiteManagerを使ってデータベースファイルを生成した、ということでしょうか。

いえ、phpスクリプトファイルからDBを作成しました。
$sql = CREATE~;
というSQL文をPDOで、
$conn->exec($sql);
として作成、といった流れです。

で、話を戻しまして、
リモートで作成(これも、phpスクリプトファイルから作成)したsqlite3のDBを、
ローカルにダウンロードして、そこでそのDBファイル(.sqlite3)にアクセスすることは
できないのでしょうか?
アクセスできない理由として、
作成者の問題、権限(パーミッション)の問題、
リモートとローカルで同じsqlite3ファイルを作成したとしても、
微妙にsqlite3のバージョンが異なることによる問題、
などにより、アクセスできなかったりするのでしょうか?

というのが前回の質問でした。
分かりにくくてすみませんでした。

なお、
実際には、
リモートで作成した.sqlite3ファイルでも、ローカルで開けるんだけど、
その開く際のファイルパスの書き方に問題があって開けないのかな、
なんて思っていたりします。

その意味で、

>define('DATABASE', dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'sqlitemanager' . DIRECTORY_SEPARATOR . 'hoge.db');

ここには注目しました。
やはり、パスの問題なのでしょうか?

ちなみに、ローカルにダウンロードしてきて、
その.sqlite3ファイルは、それにアクセスするphpスクリプトファイルと
同じディレクトリに入れています。


hogehogeディレクトリ内
hogehoge/db_hoge.sqlite3  //データベース
hogehoge/script_hoge.php  //データベースを操作するphpスクリプト

script_hoge.php の中では、
define('DB','db_hoge.sqlite3');

のようにして、DBにアクセス。

以上、何度もスミマセン。
宜しくお願い致します。

お礼日時:2010/12/11 02:24

大アイアンです。

ドライバー以上に飛びます。違います。打ち間違いです。

代替案です。

俺自身、インストールしてみて、へ~って思っただけで、結局使わなかったもので、
なんか 開発も止まってしまっているような、WampServerと言うものもあります。

http://www.forest.impress.co.jp/article/2008/12/ …

http://www.wampserver.com/en/

http://ja.wikipedia.org/wiki/WampServer

正直、自分自身も 使い込んでおりませんし、よく分かってもおりません。
そんなのを、あまり人に勧めるのもどうかと思ってますので、万策尽きて どうしようもない時にお試しください。

なんか 似たようなものが、もう一つあったのですが、名前が完全に記憶から吹っ飛んでしまっており、思い出せません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>大アイアンです。

打ち間違いを修正できるにも関わらず、そのまま強行突破する辺りが、
まさに大アイアンと言えそうです。笑

さて、wampサーバー(リナックスだとランプなのでしょうね。)という、
開発のストップしている怪しげな大アイアンを教えて頂き、ありがとうございます。

xamplite1.7.3が今最も熱い代替案として浮上していますので、
この代替案でつまずいたら、ワンプを覗いてみようかと思います。
もっとも、ワンプでSQLite3が使えないのであれば、役立たずですが…。

>似たようなものが、もう一つあったのですが、名前が完全に記憶から吹っ飛んで

こちらも大アイアンだったんですね。
なんと芸の細かいこと。笑

お礼日時:2010/12/09 08:04

となると後はアンインストール時にレジストリが消えきってないということが考えられるんですが、



http://www.getnext.net/wp/?p=346
こんな記事が。

また、XAMPPをサービスとして起動とか、そういうオプションにチェックをいれていた場合、
コントロールパネル>管理ツール>サービス
の中の一覧にApacheが存在してたりすることがあるのですが、コレは問題なかったですか?


http://kawama.jp/archives/2006/09/windows.html
一応、削除方法がここに。

上記でも無さそうなら、レジストリエディタ起動して、xamppとなの付いているエントリを確認して、
最初の記事のようにディレクトリが現在と違うものがあるなら、削除したり、書き換えたりを
試してみてもいいかもしれません。※レジストリ編集は慎重に。


■代替案
恐らく本家Apacheを入れても、同じ現象になると思うので、当てに出来ないと思います。
別のHTTPDを入れてみるって言うのも手といえば手ですが・・・・
・AN Httpd
・雷電HTTPD
とか・・・・
まぁ、マイナーな物を使っても情報は見つからないでしょうし、オススメは出来ません。

最も良い方法は、Windows自体の再インストール、とかなってしまいそうですね。

この回答への補足

■「お礼」の記載の中で分かりにくいかもしれない箇所を修正します。

------------
私がしたのは、
アンインストール
→ディレクトリを変えての再インストール
→ディレクトリの異なるものでxamppと名の付くファイルやデータを修正or削除
------------

↓修正(より正確かつ詳細に)

------------
私がしたのは、

→アンインストールをし、

→過去のレジストリが残った状態(つまり、何も手を加えていない状態)で、
ディレクトリを変えての再インストール。
(具体的には、「c:\xampp\xampp」から「c:\xampp」へ)

→レジストリエディタを開き、xamppと名の付くものの中から、「ファイルの名前」や「データ(中身)」を、正しいディレクトリのものへと、修正or削除
(具体的には、「c:\xampp\xampp」から「c:\xampp」へ)
------------

補足日時:2010/12/09 08:14
    • good
    • 0
この回答へのお礼

回答有り難うございます。

>コントロールパネル>管理ツール>サービス
>の中の一覧にApacheが存在してたりする

確認しましたが、Apacheが関係するものは有りませんでしたので、
ゆえに、「消す」という作業をすることはありませんでした。
ついでに、Apacheとは無関係な、しかし、邪魔しているかもしれないサービス
を止めたりしてみましたが、これも効果はなく。

>レジストリエディタ起動して、xamppとなの付いているエントリを確認

レジストリエディタなるものを使うのは初めてでしたが、
起動させ、「編集>検索」を経由して、「xampp」を検索。
該当するものを1つずつ見ていき(F3キーで移動)、
「c:\xampp\xampp」のものを「c:\xampp」へと修正。

バージョン1.7.0の旧xamppは、「c:\xampp\xampp」にインストールしていました。
一方、新バージョンは「c:\xampp」にインストールしたので、
レジストリの中にある「c:\xampp\xampp」関連のものをすべて、
「c:\xampp」に修正し、その際、
修正した結果、その名前「c:\xampp~~~」は既にあります
とエラーが出たものについては、削除 としました。

-----
と、ここまで書いていて思うのですが、
旧バージョンがインストールされていたディレクトリ「c:\xampp\xampp」
に対し、新バージョンも同様に、そのディレクトリへインストールした場合には、
関連するレジストリは、おそらく、すべて上書きされる?のではないかと思うので、
上記のようなレジストリの書き換えはしなくても済んだのでしょうか?
-----

というわけで、書き換えるべき全てのレジストリを書き換え、
今度こそはと、Apacheを起動させてみましたが、変化はありませんでした。
ついでに、PCの再起動なんかもしてみましたが、それでもダメ。

私の行ったレジストリの修正・削除の方法は、
もしや、間違っていましたでしょうか?

アンインストール後に、レジストリエディタから、
xampp関連のものをすべて「削除」し、まっさらにし、
その上で、改めてインストールをする、
という方法で再インストールをすべきだったのでしょうか。

私がしたのは、
アンインストール
→ディレクトリを変えての再インストール
→ディレクトリの異なるものでxamppと名の付くファイルやデータを修正or削除

という方法です。

また、
ご提示頂いた、■代替案については、やり方がよく分からないため、まだしていません。

話は変わり、
xampplite1.7.3なるものはどうなのか、と思い、
インストールしてみました。
そしたら、見事、使えました。
liteバージョンだと、FTPサーバー、Mailサーバー機能が省かれているようです。
ということは、この辺りの機能との相性により、本件は生じていた問題なのでしょうか。
まぁ、よく分かりませんが、liteなら使えそうです。
最悪、これを使うことになりそうです。

また、これまでxampp1.7.0を使っていた、というのは既にお話しした通りですが、
xampp1.7.1はどうかと思い、試してみましたら、これも使えました。
では、1.7.2はどうかと言うと、これはダメでした。
インストールの際に、オレンジ色の画面がモニタいっぱいに広がる形式の
インストーラーの場合(1.7.0や1.7.1が、そう。)だと、
インストール後、正常にApacheは機能し、
コマンドプロンプト上で(y/n)のやりとりだけでインストールを進めるタイプの
バージョンですと、正常にApacheは機能しない、
という違いがあることが分かりました。

本件の原因が、インストール形式にあるのかどうかは謎ですが、
念のため、記しておきます。

さて、これで、
xamppの新しめのバージョンだと、エラーが出ることが分かりました。
悲しいことに、1.7.2からSQLite3対応のようで、
私が今使うことのできる中で最も新しいバージョンである1.7.1は、
SQLite3を使いたい私には、1.7.0同様、役立たずです。

liteだと、最新バージョン1.7.3が使え、
これはSQLite3に対応しているため、問題有りません。
ただ、Mailサーバーが使えないのは少なからず残念な点です。

以上の私の試行錯誤の結果から、
もし何か他に打開策など思いつくことがございましたら、是非ご教示下さい。
宜しくお願い致します。

お礼日時:2010/12/09 07:57

ざっと調べてみましたが、Skypeとかでポートの競合があるとか、


XamppとかApacheだけとかサービスですでに起動している別のプロセスが動きっぱなしになっているとか。

一応ここらへんを確認してみてはいかがでしょう。

また、単純にポートの競合であるのなら、httpd.confでListenポートを、現在の80から、8888とかに変えてみて起動するか確認するというのはどうでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>Skypeとかでポートの競合があるとか

これはどうやったら調べられますでしょうか?
質問文に書きました通り、スカイプの件は80ポートをスカイプでは使わない
という設定に変えて対処しています。
また、Xamppn内の「xampp-portcheck.exe」にて、
ポートの競合がないかのチェックも既にしてあります。
すべての項目において「free」となっています。

>すでに起動している別のプロセスが動きっぱなしに

PC起動直後にApacheを起動してみてもダメでした。
もっとも、PC起動直後が、まっさらな状態かどうかは謎ですが。
(まっさらな状態かどうかの確認方法がありましたら、教えて頂けると助かります。)

>httpd.confでListenポートを、現在の80から、8888とかに変えてみて起動

これもやってみました。
C:\xampp\xampp\apache\conf にある、httpd.conf を、

#Listen 0.0.0.0:80
#Listen [::]:80
Listen 8888

のようにして、PCの再起動はせずに、
すぐにApacheを起動させようとしてみましたが、
やはりダメでした。

で、この作業の結果、吐かれたエラーログは、
これまでのエラーログと全く一緒です。

参考:
http://detail.chiebukuro.yahoo.co.jp/qa/question …

ん~、どうしたらよいのやら。

ApacheとPHP5とSQLite3が使えれば良いので、
Xamppじゃなくても良いのかもしれないのですが、
何か、代替案はありますでしょうか。
もしご存知でしたら、お教示下さい。
宜しくお願い致します。

お礼日時:2010/12/09 00:34

多分、俺のも ほとんど同じ状態です。


ただ、それでも、特に何もいじらずに使えてしまっているので、いつも通りの斜め下な回答ですみません。

俺は、apache と mysql しか使ってないのですが、コンパネを以下の順序で押すと安定します。

apacheクリック → Mysqlクリック → [apache落ちる] → 再度、apacheクリック → 安定

最近、意識せずに こうしている為、よく覚えていませんが、Mysqlを先に起動させると良いのかもしれません。

俺は この状態で使えてしまっている為、問題を解決せずに回避しているだけです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

私の場合ですと、mysqlをon/offしても全く効果はなく、
相変わらず、起動後2秒で落ちます。
この姿勢がずっと変わらないという意味では、
ある意味、安定していると言えます。苦笑

また、ちなみに私は、Xamppのコントロールパネルでon/offできる機能のうち、
Apacheのみ使用したいと考えていますので、
正常に動作してくれる他の機能については、
正直、どうでも良かったりします。

Apache+PHP+SQLite3で使いたいと考えているので、
Xamppでなくてもいいのかもしれません。

>問題を解決せずに回避しているだけ

この考え方、よく分かります。
私も、それで対処できるのであれば、そうしたいところですが、
今はそれすらできない状況なので、本当にまいっています…。

また何か分かりましたら、アドバイスして下さい。

お礼日時:2010/12/08 19:14

Xamppディレクトリ内の、apache/logs/error.logファイルに何かエラーとか表示されていないですか?



以前のhttpd.confファイルなどを上書きで使い回してたりすると、パスが変わったり、書式が変わったりしててエラーが出たりということはあったりします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速、エラーログをコピペさせていただきます。
(アンインストールしたはずの古いXamppが何らかの形で影響を及ぼしているのでしょうかね…?)

[Tue Dec 07 18:06:08 2010] [notice] Server built: Nov 11 2009 14:29:03
[Tue Dec 07 18:06:08 2010] [crit] (22)Invalid argument: Parent: Failed to create the child process.
[Tue Dec 07 18:06:08 2010] [crit] master_main: create child process failed. Exiting.
[Tue Dec 07 18:06:08 2010] [notice] Parent: Forcing termination of child process 36
[Tue Dec 07 18:06:16 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Dec 07 18:06:16 2010] [notice] Digest: done
[Tue Dec 07 18:06:16 2010] [notice] Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations

このことから、何か分かりますでしょうか…。
宜しくお願い致します。

お礼日時:2010/12/08 03:30

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