![](/img/trans.png)
[英]No connection could be made because the target machine actively refused it Laravel 5
[英]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')
與NULL
, env('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 MySQL
, the 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.