当我在 ubuntu 服务器上使用我的 Laravel 应用程序时,我在连接和使用 Azure SQL 数据库时遇到了一些问题。
我已经浏览了从 PHP 应用程序连接到 SQL 数据库的Microsoft文档,并从 Azure 运行连接向导,以查看我的服务器是否可以连接,它们可以连接。
我相信我对 PHP.ini 配置有问题,但也遵循了微软的文档。有人有这方面的经验吗?
Digitial海洋服务器由Laravel Forge配置。
我们需要连接到的 Azure 数据库位于 Azure Microsoft,并通过其管理区域进行设置。
我已将 Azure 数据库服务器列入白名单,以接受来自数字海洋服务器的传入连接。
• 我建议您检查在Digital Ocean ubuntu VM上运行的Laravel应用程序的连接代码,并确保在与Azure SQL数据库连接方面如下所示:
DB_CONNECTION=<connection name of the sql db>
DB_HOST=<ip address of the SQL Server>
DB_PORT=<port number for the SQL DB>
DB_DATABASE=mydb
DB_USERNAME=user
DB_PASSWORD=secret
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'mydb'),
'username' => env('DB_USERNAME', 'user'),
'password' => env('DB_PASSWORD', 'secret'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
将"mysql"连接参数更改为 Azure SQL 数据库连接的参数,然后再次尝试连接。建议您查看以下社区线程,以获取有关为此目的配置Laravel服务器的更多信息:-
如何在不使用工匠的情况下在远程 ubuntu 服务器上连接 Laravel 7.12 项目的数据库
• 在".env"文件中,请确保在其中配置以下行具有正确的值:-
APP_URL=http://laravel.example.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laraveldb DB_USERNAME=laravel DB_PASSWORD=password ’
和".conf"文件如下:-
<VirtualHost *:80> ServerAdmin admin@example.com ServerName laravel.example.com DocumentRoot /var/www/html/laravel/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html/laravel> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
成功配置上述内容后,请确保 SQL数据库端口允许来自配置 Laravel 应用的 ubuntu 服务器的出站网络连接,并且 SQL Server 上也允许相应的传入网络连接。需要在与 VM 相关的 NSG 上进行这些更改,并在 Azure SQL Server 上的"网络"部分中进行这些更改,你可以在其中配置虚拟网络中允许的 VM 的 IP 地址。
欲了解更多信息,请参阅以下链接: -
https://snapshooter.com/learn/guides/how-to-install-laravel-ubuntu
我最终发现我能够连接。我运行了php artisan db:show
命令,发现我确实已连接到 Azure 数据库。问题是我正在运行的种子命令是一个非常长时间运行的命令,这让我认为它不起作用。
因此,有关连接到 SQL 服务器数据库的 laravel 文档是正确的。
您可以通过以下链接关注Laravel文档:https://laravel.com/docs/9.x/database#mssql-configuration
您可以按照此处的Microsoft文档从 PHP 应用程序进行连接: https://learn.microsoft.com/en-us/azure/azure-sql/database/connect-query-php?view=azuresql