簡體   English   中英

PHP Laravel:無法建立連接,因為目標機器主動拒絕它

[英]PHP Laravel: No connection could be made because the target machine actively refused it

我正在 Laravel 5 中構建一個 Web 應用程序。該應用程序應該將“類別名稱”存儲在 MySQL 數據庫中,並顯示一個表單以添加新的“類別名稱”。 當我執行命令php artisan serve並導航到http://localhost:8000/admin/categories/ 時,我收到以下錯誤消息:

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

根據我讀到的關於堆棧溢出的幾篇文章,許多遇到此錯誤的用戶沒有正確配置 .env 文件,該文件覆蓋了在 database.php 文件中指定的 PHP 數據對象 (PDO) 的默認設置。 .env 文件定義如下:

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

database.php 文件中的 mysql 鍵為:

 'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'homestead'),
            'username'  => env('DB_USERNAME', 'homestead'),
            'password'  => env('DB_PASSWORD', 'secret'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,

奇怪的是,當我通過 ssh 進入我的虛擬機並運行mysql -uhomestead -psecret homestead ,我能夠連接到數據庫。 問題是,當我可以用相同的參數直接連接到它時,為什么 Laravel 無法連接到 MySQL? 還有什么可以拒絕訪問 Laravel?

有時可能是緩存問題:

    php artisan config:clear

我將 homestead.yaml 中指定的 ip 地址從 localhost 更改為 192.168.10.10。 然后我跑了homestead provision ,這似乎解決了這個問題。 主機無法解析 localhost 或 127.0.0.1,因為它們已經映射到自身。

我收到此錯誤是因為我忘記在 XAMPP 控制器中啟動 MySQL。

我在 Wampserver 上遇到了同樣的問題。 它對我有用:

您必須更改此文件:“C:\\wamp\\bin\\mysql[mysql_version]\\my.ini” 例如:“C:\\wamp\\bin\\mysql[mysql5.6.12]\\my.ini”

並將默認端口 3306 更改為 80。(第 20 行和第 27 行,在兩者中)端口 = 3306 到端口 = 80

我希望這是有幫助的。

然后只需轉到您的控制面板並啟動 Apache 和 MySQL 服務。

當我可以使用相同的參數直接連接到 MySQL 時,為什么 Laravel 無法連接到它?

來吧, env('DB_HOST', 'localhost')NULLenv('DB_USERNAME', 'homestead')homestead

您不能將諸如明確提供的文字、不存在的參數或某個函數的結果這樣不同的事情稱為“相同”! 這是三個不同的問題!

只有在兩種情況下提供字面上相同的參數時,才能說“相同”:

mysql -hlocalhost -uhomestead -psecret homestead

對於外殼,和

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'homestead',
        'username'  => 'homestead',
        'password'  => 'secret',

對於 Laravel。

我遇到了同樣的問題並閱讀了互聯網上的所有答案,但沒有一個有幫助! 終於找到了答案,我希望這個解決方案對某人有所幫助。

我只是將我的 DB_PORT 設置為33060 ,問題就解決了。

原因可能是:

如果您嘗試從不同的服務器訪問 DB,那么面臨的大多數騙子問題是DB 訪問僅限於 localhost/127.0.0.1

解決方案:可以修改my.cnf (在Ubuntu上再次位於my.cnf /etc/mysql/my.cnf)並更改以下內容:

bind-address   = 0.0.0.0

要么

bind-address   = SERVER_PUBLIC_IP_ADDRESS

我建議創建一個 db 用戶而不是 root 並刪除 root 使用,因為使用 root 用戶從任何 IP 提供數據庫訪問是不安全的。

如果您嘗試從同一服務器連接數據庫:

解決方案:只需使用 TCP/IP 而不是 Unix 套接字。 您可以在連接時使用 127.0.0.1 而不是 localhost 來完成此操作。 不過,Unix 套接字可能會更快更安全地使用。

更改后,您已重新啟動 mysql 服務

sudo service mysql restart

我變了

DB_HOST=本地主機

DB_HOST=本地主機:3307

在 .env 文件中

我曾經遇到過同樣的問題,但在我自己的情況下,我在本地服務器上運行。 后來我發現錯誤:

"PDOException with a message 'SQLSTATE[HY000] [2002]無法建立連接,因為目標機器主動拒絕了它。”

是因為我沒有Apache and MySQL in Xampp控制面板中啟動Apache and MySQL in Xampp ,所以應用程序無法獲取所需的結果,因為沒有連接。

我立即在 Xampp 控制面板中啟動了Apache and MySQLthe error was fixed 希望這對你有用

看起來很明顯,但是,有時 WAMP 或 XAMP 運行時會出現一些問題,或者它們沒有打開,因此它們可能會導致此問題。

在 Windows 中,只需關閉 User Access Persimissions (UAC) .-open run -type msconfing 並按 Enter -go to tools and look for.UAC -set to never notice -restart the PC,它會

請記住在出現提示時允許它通過防火牆。

在我來說,我曾寫信給在.ENV文件DB_HOST虛擬機像宅基(192.168.10.10)的默認地址。 但它只適用於artisan migrate 但是,使用應用程序“遠程”連接此數據庫需要使用 127.0.0.1 的 IP。

希望它會幫助某人。

我在 SQLite 數據庫中遇到了這個錯誤。 與其他環境不同,如果數據庫文件不存在,可能會創建它,在 Laravel 中,我必須手動創建數據庫文件。 運行服務器創建了它; 這導致我犯了這個錯誤。 重啟服務器后就OK了。

檢查您的 XAMPP(如果您正在使用)。 我一遍又一遍地得到同樣的錯誤,直到我意識到我的 xampp 沒有啟用或離線,所以我啟用了我的 xampp,然后它終於工作了。

我剛從 ubuntu homestead 切換到 windows,這發生了。 我所做的是將 env 更改為:

DB_HOST=本地主機 DB_PORT=33060

也這樣做: cd ~/code/project-name/ 然后運行 ​​php artisan config:clear

在 env 文件中我改變了 ==>

CACHE_DRIVER=redis

CACHE_DRIVER=file

現在它正在工作。

我有一個類似的問題,但就我而言,我忘記啟動 apache 和 MySQL。 當 Apache 和 MySQL 未運行時,您將無法訪問數據庫。

我遇到了同樣的問題。 終於找到了答案,我希望這個解決方案對某人有所幫助。

php工匠配置:清除

並且不要忘記啟動 xaamp 或 wamp 服務器。

如果您使用 Bitnami Wamp Stack,您將需要確認 MySQL 數據庫的端口也已配置。

圖片

如果您想使用與預定義的3306不同的端口,那么您可以將 config/database.php 文件配置為

'port' => env('DB_PORT', '3306'),基於您用於項目的連接類型

Illuminate\\Database\\QueryException SQLSTATE[HY000] [2002] 無法建立連接,因為目標機器主動拒絕它

當我遇到這個錯誤時,我試圖通過清除緩存來擺脫它

php artisan config:clear
php artisan cache:clear

它沒有幫助,但我記得 Xampp(我的本地服務器)沒有啟動。

我收到此錯誤是因為在 php artisan 服務之前沒有啟動 mySql 和 apache。

我正在Laravel 5中構建一個Web應用程序。該應用程序應該獲取存儲在MySQL數據庫中的“類別名稱”,並顯示一個表單以添加新的“類別名稱”。 當我執行命令php artisan serve並導航到http:// localhost:8000 / admin / categories /時,收到以下錯誤消息:

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

根據我在堆棧溢出時閱讀的幾篇文章,許多遇到此錯誤的用戶沒有正確配置.env文件,該文件覆蓋了database.php文件中指定的PHP數據對象(PDO)的默認設置。 .env文件定義如下:

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

並且database.php文件中的mysql密鑰給出為:

 'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'homestead'),
            'username'  => env('DB_USERNAME', 'homestead'),
            'password'  => env('DB_PASSWORD', 'secret'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,

奇怪的是,當我使用SSH進入虛擬機並運行mysql -uhomestead -psecret homestead ,我能夠連接到數據庫。 問題是,當我可以使用相同的參數直接連接到MySQL時,為什么Laravel無法連接到MySQL? 還有什么可能會拒絕訪問Laravel?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM