ryu1013
@ryu1013 (RYU)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

XFREEでMySQLの接続が出来ません。

解決したいこと

XFREEという無料レンタルサーバーを使用してPHPでログインフォームの作成を勉強しています。

発生している問題・エラー

localhost上では問題なくMySQLと接続出来るのですが、XFREEを使用するとエラーになります。表示されたエラーは下記のものになります。

SQLSTATE[HY000] [2019] Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)

こちらで実際に見れると思います。
(http://nanashi001.php.xdomain.jp/public/signup_form.php)

該当するソースコード

PHP/dbconnect.php
<?php
require_once 'env.php';
function connect()
{
  $host = DB_HOST;
  $db   = DB_NAME;
  $user = DB_USER;
  $pass = DB_PASS;

  $dns = "mysql:host=$host;dbname=$db;charset=utf8mb4";

  try {
    $pdo = new PDO($dns, $user, $pass, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
    return $pdo;
  } catch (PDOException $e) {
    echo '接続失敗です!' . $e->getMessage();
    exit();
  }
}
PHP/env.php
<?php

define('DB_HOST','mysql1.php.xdomain.ne.jp');
define('DB_NAME','#');
define('DB_USER','#');
define('DB_PASS','#');

(保護のためとしています)

自分で試したこと

エラーを調べてみたところ utf8 を utf8mb4 に変更する とあったのですが、コードの charset は ちゃんと utf8mb4 になっていて どこを変更すればいいのかわかりません。

0

2Answer

エラーを調べてみたところ utf8 を utf8mb4 に変更する とあったのですが

逆で utf8mb4 -> utf8 に変更しないといけないのではありませんか?

2Like

Comments

  1. @ryu1013

    Questioner

    なるほど!逆転の発想でした。
    無事解決しました!ありがとうございました。

Comments

  1. @ryu1013

    Questioner

    そおなんですね...
    まだ色々勉強が必要そうです。

Your answer might help someone💌