開発者の人は、PCにApache・PHP・mySQLを入れている場合も多いでしょう。
うちでも使っていますが、再インストールなどでエラーになる場合があるので随時まとめていきます。
- Apacheの使い方・エラー
- PHP・mySQLの使い方・エラー
- 「Fatal error: Uncaught Error: Class 'mysqli' not found in ○○○」が出る
- mysqli_real_connect(): (HY000/2002):
- Failed to connect to MySQL: (2002)
- Failed to connect to MySQL: (2054) The server requested authentication method unknown to the client
- Failed to connect to MySQL: (1045) Access denied for user 'root'@'localhost' (using password: YES)
Apacheの使い方・エラー
インストールするには?
Apacheの公式サイトではウィンドウズ用アパッチサーバとしてはソースコードを配布しています。
コンパイルされたバージョンを利用するには別サイトから入手しないといけません。
同サイトでWin32(32ビット版)かWin64(64ビット版)を選んで入手しましょう。
ダウンロード後はZIPファイルを解凍し、Cディレクトリなどへ移しておきましょう。
インストールに当たっては、ウィンドウズ版のアパッチはVicualCのランタイムが必要となっています。
バージョンが今後上がるかもしれませんが、執筆時現在ではVisual Stucio2015用のパッケージをインストールすると大丈夫でした。
以下より入手し、インストールを済ませましょう。
Download Visual Studio 2015 の Visual C++ 再頒布可能パッケージ from Officialrosoft Download Center
(更新)
ApacheはプロジェクトをGithubへ移行することを発表。
今後はGithubからのダウンロードになるかもしれません。
The Requested operation has failed
Windows 10にすると、Apacheを起動しようとすると「The Requested operation has failed」と失敗する場合があります。
対処法はまず「コントロール+シフト+エスケープ」でタスクマネージャーを起動します。
「サービス」タブへ移動します。
W3SVCというのを右クリックして「停止」を選びます。
するとその後Apacheは無事起動できました。
(更新)
久々Apacheを入れなおす機会があり、同じく「Requested operation failed」が出たのですが、その場合W3SVCはなくなっていました。
いろいろ試したところ
- コマンドプロンプトから「services.msc」といれサービスを起動
- アパッチを選び、右クリックで「プロパティ」を表示
- 「開始」を実行
で無事動きました。
PHP・mySQLの使い方・エラー
「Fatal error: Uncaught Error: Class 'mysqli' not found in ○○○」が出る
Apache, PHP, MySQLといれていけば、いよいよローカルでもMySQLデータベースを使ったサイトを表示できるようになるはずです。
しかし、実行してみると「Fatal error: Uncaught Error: Class 'mysqli' not found in ○○○」というエラーが続きます。
バージョンを確認する
ウィンドウズでは基本的には最新版PHPはmysqliは初期設定で有効になっているようです。
PHPのバージョンが5.2以前の場合、インストール作業が必要がかもしれません。
関数で確認する
あるサイトに便利な関数がのっていました。
これを使ってPHPがmysqliを実行できるかチェックすることができます。
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'ないですよ';
} else {
echo 'あるよ';
}
iniの場所を確認する
「echo(phpinfo());」などでバージョン情報を表示します。
するとiniがある場所「configuration file(php.ini) Path」や読み込んだ設定ファイル「Loaded Configuration File」の欄があります。
これをみると設定ファイルをWindowsディレクトリに置くようになっています。
うちではおかれていませんでしたので(PHPフォルダに入れていました)、こちらへ移動してApacheを再起動して無事動くようになりました。
PHPを入れなおす
また再度エラーが起きた場合の対処法です。
基本的には「php_mysqli.dll」は、「C:\php\ext\」内にあります。
これは「php.ini」で「extension_dir = "C:\php\ext"」のように指定し、「extension=php_mysqli.dll」のように記述してあれば呼び出されるはずです。
「php_mysqli.dll」があること、「ini」での書き方が正しいことをチェックしてみましょう。
うちでは結局再度PHPをコピペしなおし、「ini」を書き直したら動作するようになりました。
mysqli_real_connect(): (HY000/2002):
Failed to connect to MySQL: (2002)
Mysqlへ接続できない場合のエラー。
まずMySql自体動作していない場合にはこのようなエラーになります。
実際MySQL Command Line Clientを起動してみると「Libey32.dllがみつかりません」や
と「SSLeay32.dllがみつかりません」などのエラーが出ていました。
MySQLを再インストールするなどし、まずはMySQLのクライアントが動作するように設定してみましょう。
Failed to connect to MySQL: (2054) The server requested authentication method unknown to the client
MySQL8から高度な認証が使用されるようになっています。設定が正しくない場合にエラーとなります。
以下サイトを参照し、設定を変更します。
https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917
また、MySQLの古いバージョンである5をあえてインストールするという方法もありかなとは思います。特に開発用にローカルで動作させるのであれば、古いバージョンでも支障は少ないでしょう。
Failed to connect to MySQL: (1045) Access denied for user 'root'@'localhost' (using password: YES)
現在調査中。