アプリの教科書

アプリ・ウィンドウズで困ったことを調べたブログ

ウィンドウズ10やアプリで困ったことを調べたブログです。

スポンサーリンク


【Windows 10】Apache・PHP・mySQLのエラー

開発者の人は、PCにApache・PHP・mySQLを入れている場合も多いでしょう。

うちでも使っていますが、再インストールなどでエラーになる場合があるので随時まとめていきます。

Apacheの使い方・エラー

apache_server_logo

インストールするには?

Apacheの公式サイトではウィンドウズ用アパッチサーバとしてはソースコードを配布しています。

コンパイルされたバージョンを利用するには別サイトから入手しないといけません。

www.apachelounge.com

 

同サイトでWin32(32ビット版)かWin64(64ビット版)を選んで入手しましょう。

f:id:apicode:20160525212134j:plain

 

ダウンロード後は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というのを右クリックして「停止」を選びます。

f:id:apicode:20150821102216p:plain

 

するとその後Apacheは無事起動できました。

 

(更新)

久々Apacheを入れなおす機会があり、同じく「Requested operation failed」が出たのですが、その場合W3SVCはなくなっていました。

 

いろいろ試したところ

  1. コマンドプロンプトから「services.msc」といれサービスを起動
  2. アパッチを選び、右クリックで「プロパティ」を表示
  3. 「開始」を実行

で無事動きました。

 

 

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」の欄があります。

f:id:apicode:20170606101209p:plain

 

これをみると設定ファイルを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がみつかりません」や

f:id:apicode:20190501090241p:plain

 

と「SSLeay32.dllがみつかりません」などのエラーが出ていました。

f:id:apicode:20190501090243p:plain


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)

現在調査中。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ