3

我正在尝试将 Laravel 4 连接到 SQL Server 数据库。我收到一个错误,但我认为这是一个 PHP 错误,而不是 Laravel 错误。它说PDOException: could not find driver。我将驱动程序设置为sqlsrv喜欢文件中的另一个示例database.php。就像我说的,我认为这是一个 PHP 错误,而不是 Laravel。

我在我的 Mac 上的本地主机上。我需要在我的php.ini文件中配置一些东西吗?我发现另一篇文章说我需要在 PDO 下注释掉一个 MySQL 驱动程序。我也无法在我的php.ini. 但无论如何,我还需要连接到 MySQL 数据库。我需要在我的php.ini文件中更改什么?

我发现这一行:

pdo_mysql.cache_size = 2000

但是即使在重新启动 Apache 之后,将其注释掉也无济于事。

4

3 回答 3

6

根据 PHP 手册 (www.php.net/manual/en/sqlsrv.requirements.php),sqlsrv 驱动程序是仅限 Windows 的驱动程序。因此,您不能在 Mac、Linux、Unix 或任何其他操作系统上使用该驱动程序,而不是该页面上列出的那些。

我假设您正在尝试连接到某个地方的远程 SQL Server?如果你在 Mac 上,那么 SQL Server 就不会在你的本地机器上运行,所以我想第一个问题是你是否有一个 SQL Server 在某个地方运行。

其次,从运行 PHP 的服务器,您需要使用 FreeTDS 或 ODBC 与 FreeTDS 进行连接。

由于 Laravel 4 使用 PDO,你需要安装 FreeTDS 和 ODBC。Laravel 4 不使用 mssql PHP 扩展。它使用 PDO,因此 mssql 不会让您使用 Laravel 4。

如果您从 Mac 提供 PHP,我想说通常有 4 种不同的方式可以使用:

  1. 简单但昂贵的方法:访问 (www.macupdate.com/app/mac/23152/openlink-odbc-driver-for-sybase) 并下载并安装 OpenLink ODBC 驱动程序。这允许您在 XNIX 机器上使用 Sybase (MSSQL) 驱动程序创建新的 ODBC 连接。这里有一个安装演练 (wikis.openlinksw.com/dataspace/owiki/wiki/UdaWikiWeb/InstallSybaseExpressOSX)。它带有 15 天的试用期,之后您必须购买它。在撰写本文时,它的成本似乎在 30 美元到 50 美元之间,具体取决于您选择的许可证。

  2. 更难但免费的方法:按照http://blog.benjaminwalters.net/?p=10(稍微过时)将 FreeTDS 支持重新编译到 Mac 上的 PHP 中(假设您使用的是 MAMP)

  3. 更好,但工作量更大的方法:找到像 VMWare Fusion 这样的虚拟机主机软件,并安装像 Ubuntu 12.4 这样的 Linux 服务器。确保在安装过程中安装 apache2 和 PHP,然后按照此处的步骤让 FreeTDS 在您的新服务器机器上运行。

  4. 从运行 SQL Server 的 Windows Server 运行 PHP

里程数会因每种解决方案而异,并且无论如何都有一个学习曲线。我从事 PHP 开发已经有很长时间了,我花了好几天的时间才弄清楚如何从 Linux 第一次连接到 SQL Server。值得庆幸的是,现在有很多演练,从那时起,FreeTDS 已经走了很长一段路。

希望有帮助。:)

于 2013-03-09T00:15:31.010 回答
1

我实际上在我的设置上运行了这个。我最好的建议是乘坐Homebrew巴士。

https://github.com/josegonzalez/homebrew-php是您要查找安装 PHP 和相关项目的地方。我不记得我到底做了什么,但这并不是特别困难。

首先你需要 FreeTDS。

brew install freetds

然后,将Jose 的公式添加到您的自制程序中(github 页面上的说明)。在那之后,

brew install php5x --with-mssql  

brew options php5x

如果您需要更多扩展。

于 2013-08-07T13:23:54.217 回答
0

根据乔恩沃森的评论,

我已经尝试了第2步,但它不起作用。在这里检查我的问题https://github.com/laravel/laravel/issues/2180

第 3 步是断开的链接,我认为它与第 2 步相同。

我还尝试了 Laravel 的 linux ODBC 驱动程序(有 2 个,google it),两者都不起作用。虽然我的简单测试 php 在 DBLIB 和 ODBC 中都可以工作(使用官方的 microsoft odbc unix 驱动程序编译)。

第 4 步绝对有效,但您必须使用 IIS 以获得最佳稳定性。

这留下了第 1 步。或者,

抛弃 Laravel4 并使用自 2006 年以来我一直在使用的良好的 AdoDB http://adodb.sourceforge.net/并且仍然可以出色地工作(尽管不像 Laravel 那样现代)使用http://docs.moodle 中的教程对其进行配置。 org/20/en/Installing_MSSQL_for_PHP

我想知道为什么他们也不为 linux 构建 sqlsrv 驱动程序......

于 2013-07-24T17:26:53.013 回答