質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

773閲覧

phpからmysqlを呼び出したところでmysqli_connectのエラー

hatsuzo

総合スコア56

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/06/21 09:05

環境について

WindowsServer(2019)上で、
apache2.4
mysql5.7
php7.2
をインストールしました。

発生したエラーとソース

phpinfo()まで表示されることを確認後、今までphp5.4で動かしていた小さなサイトを移行しようと思っておりましたところ、
いきなり、mysqli_connect()でエラーが発生して行き詰ってしまいました。

Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in G:\myweb\mydbopen.php:3 Stack trace: #0 {main} thrown in G:\myweb\mydbopen.php on line 3

[mydbopen.php]

php

1<?php 2// MySQL 接続 3 if (!($cn = mysqli_connect("192.168.1.***", "hoge", "hogehoge", "mydb"))) { 4 die; 5 } 6?>

対策

ネットの情報でphp.iniの設定を見直しましたが、どれも対応済みです。
extension=mysqli のコメントアウトを外し
extension_dir="ext" でうまくいかないので  "c:\php\ext"のフルパスに変更し、
c:\php\extの中に php_mysqli.dll が入っていることも確認。

phpinfo()の内容を見ていると、
mysqliのセクションが出てこないので、正しくロードされていないということなのでしょうか。

プログラミングに関する話題ではないのかもしれませんが、この問題を解決された方がおられましたら、情報を頂ければと思い投稿させて頂きました。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

chatGPTの力を借りながら、試行錯誤でなんとか解決できました。
まず、拡張ライブラリがロードできない理由は、単純なミスで、httpd.confに
PHPIniDir "C:/php"
が足りないだけでした。

ただエイリアスの定義を行っている場合、その前後に上記の定義を付け加えるだけでは簡単に動かず、四苦八苦しました。
結論からいうと

httpd.conf

1# エイリアスの設定 2Alias /myweb "G:/myweb" 3# エイリアスのディレクトリに対する設定 4<Directory "G:/myweb"> 5 Require all granted 6 AllowOverride All 7 Options Indexes FollowSymLinks 8</Directory> 9# PHPの設定ディレクトリ指定 10<IfModule php7_module> 11 PHPIniDir "C:/php" 12</IfModule>

php.ini

1include_path = ".;C:\\php\\pear;G:\\myweb" 2open_basedir = "C:\\Apache24\\htdocs;G:\\myweb"

プロの方には当たり前のことかもしれませんが、エイリアスの設定に際して言及しているネット上の記事が見当たらず、なんとかこれで動作しましたので、何かのご参考にして下さい。

投稿2023/06/23 02:19

hatsuzo

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

環境設定が難しいのであればXAMPPなど統合環境をインストールすると楽です

投稿2023/06/22 00:22

yambejp

総合スコア117674

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatsuzo

2023/06/22 01:16

コメント有難うございます。 確かに自己解決できないようなレベルだと統合環境のほうがアプローチしやすいのかもしれませんが、xamppは自宅で興味半分にインストールして確かに簡単ではありましたが、開発用テスト環境というイメージが強く、10年動かしているシステムの移行なので躊躇しています。 xamppが開発用という意味は、セキュリティ面でそのように言われているだけで、完全社内システムであればそのリスクは少ないのでしょうか?
yambejp

2023/06/22 01:25

環境設定の質問なので個人環境かと思いましたが、社用なのですね apacheの再起動はしましたか?
hatsuzo

2023/06/22 04:06

コメント有難うございます。 そうですね。設定は変える度にapacheは再起動しています。 phpを別のバージョンに入れ直してみましたが、同じ結果に終わりました。 もしやapacheのほうに問題があるのかもしれません。 apacheは2.4のmodule版を入れました。PHPは7.4.27のTS版に入れ直しました。
hatsuzo

2023/06/22 09:06

質問者です。 まだ解決に至っていませんが、原因が判りかけてきました。 お恥ずかしながら、httpd.confの設定もれであることが判りました。 PHPIniDir "C:/php" を付け加えたところ、mysqliは認識できてphpinfo(); に載ってきました。 ところが、実際に稼働させる場所をaliasで指定している部分が動かなくなりました。 PHPIniDir "C:/php" <IfModule alias_module> Alias /myweb "G:/myweb" <Directory "G:/myweb"> Require all granted AllowOverride All Options Indexes FollowSymLinks </Directory> </IfModule> <IfModule php7_module> PHPIniDir "C:/php" </IfModule> などと囲ってみましたがダメでした。 相関関係があるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問