SynologyNASでホストされている建設中のページを作成しています。
訪問者は自分の電子メールで購読し、Webサイトが利用可能になる時期を知ることができます。
データベースと、データベースに電子メールを追加するPHPコード)に問題があります。
サーバー名がlocalhost
の場合、次のエラーが発生します。
SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリはありません
127.0.0.1
または127.0.0.1:3306
の場合、以下のエラーが発生します。
SQLSTATE [HY000] [2002]接続が拒否されました
Stackoverflowでまだ解決策が見つかりませんでした。
ここでPHPコード:
<?php
$servername = "localhost";
$username = "id";
$password = "password";
$dbname = "dbname";
try {
$conn = new PDO( "mysql:Host=$servername;dbname=$dbname", $username, $password );
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO email ( email ) VALUES ( '$email' )";
$conn->exec( $sql );
echo "New record created successfully";
}
catch( PDOException $e )
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
なぜこのエラーが発生するのですか?
私は同じ問題を抱えていました:
SQLSTATE[HY000] [2002] Connection refused
synologyで実行されているMariaDBデータベースに接続しようとしたときNAS phpから。ユーザー名とパスワードのみを提供する
$conn = new PDO( "mysql:Host=$servername;dbname=$dbname", $username, $password );
ポート番号を指定している間、他の場所で見つかった解決策も機能しませんでした:
$conn = new PDO( "mysql:Host=$servername;port=3307;dbname=$dbname", $username, $password );
何が機能しますか(私にとって):
$conn = new PDO("mysql:Host=$servername:3307;dbname=$database", $login, $password);
ポート名は、SynologyNASのメインメニューからMariaDB10プロパティウィンドウを開いたときに見つかります。どうやら、port=3307
仕様は効果がありませんが、エラーメッセージも表示されません。
Synology WitchにmariaDBをインストールしたため、MySQLのデフォルトポートを3306から3307に変更したため、接続が拒否されました。
ちょうど同じ問題がありました、そしてこれが私がそれを修正した方法です。私はDSM6.2.2-24922 Synologyディスクステーションで実行しています。Nginx、PHP 5.6、およびMariaDB 10(およびphpmyadmin)を使用してWebステーションをインストールしました。
私が見つけた修正は、最初にphp構成でpdo_mysql拡張機能をアクティブ化することでした。
次に、Coreタブに移動し、pdo_mysql)を探します。 default_socket。
デフォルトで私は持っていた
/tmp/mysql.sock
/run/mysqldmysql10.sock