【问题标题】:Ubuntu / SQL Server - PHP script works in terminal, but not web applicationUbuntu / SQL Server - PHP 脚本适用于终端,但不适用于 Web 应用程序
【发布时间】:2019-03-29 17:05:58
【问题描述】:

我有一个 Ubuntu VM / Azure SQL DB 组合,其中有两组 PHP 文件。

1) 一些从 CRON 作业运行的脚本

2) Yii2 框架网站

两个环境都连接到 SQL Server 数据库。

我已经完成了编译 sqlsrv 的所有步骤并将其添加到 PHP 的扩展列表中。我的脚本在终端上运行良好,但在网站上出现错误:

找不到驱动程序

我的网络服务器是 nginx,它可以正常运行网站,但 PDO 无法连接到 SQL Server。

我只有一个 PHP 安装,但仍然使用代码来确定哪个是正确的 php.ini 文件,并且它具有正确的扩展指令。

phpinfo() 输出还在“Registered PHP Streams”部分显示 sqlsrv。

我的 UFW 防火墙处于非活动状态,并且我没有 SUSELinux。然而,端口 22 和 80 是开放的。甚至尝试启用它。

我不确定还可以尝试什么。救命!

编辑

我创建了一个简单的测试文件。当我通过终端运行它时,它可以工作,但是当我通过浏览器运行它时,它不会。

编辑 2

我安装的是 Apache2 而不是 nginx,现在一切正常。

【问题讨论】:

  • 您能否仔细检查一下您的 DSN 字符串在 cron 作业脚本和 Web 应用程序中是否完全相同? DSN 是 PDO 构造函数的第一个参数:php.net/manual/en/…。你的 Yii 配置中可能有这个:yiiframework.com/doc/guide/2.0/en/…
  • @IanDrake 我将 DSN 字符串从我的脚本文件复制粘贴到 Yii 框架,以及一个空白的 test.php 文件。

标签: php sql-server ubuntu nginx pdo


【解决方案1】:

我认为您只需要尝试一些“Hello world”。如果这不能帮助在终端输入:

sudo apt-get install php-mysql

然后重启你的 nginx 服务器:

sudo killall nginx && /usr/local/nginx/sbin/nginx

【讨论】:

  • 我有一个三行 hello world 程序,我正在使用 nginx / sql server
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2015-01-12
相关资源
最近更新 更多