Mac localhost上的Laravel 4:找不到SQLSRV的驱动程序


Laravel 4 on Mac localhost: Cannot find driver for SQLSRV

我正在尝试使用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之后,对其进行评论也无济于事。

根据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.macudate.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(稍微过时)在Mac上将FreeTDS支持重新编译为PHP(假设您使用的是MAMP)

  3. 更好但也更多的工作方式:找到一个像VMWare Fusion这样的虚拟机主机软件,安装一个像Ubuntu 12.4这样的Linux服务器。确保在安装过程中安装了apache2和PHP,然后按照这里的步骤在新的服务器机器上运行FreeTDS。

  4. 从运行SQL Server 的Windows服务器运行PHP

每种解决方案的Milage都会有所不同,而且在任何情况下都有一个学习曲线。我做了很长时间的PHP开发人员,花了好几天时间才弄清楚如何从Linux第一次连接到SQL Server。值得庆幸的是,现在有相当多的演练,自那时以来,FreeTDS已经取得了长足的进步。

希望能有所帮助。:)

实际上,我的设置中运行了这个。我最好的建议是坐自制的公共汽车。

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

首先,您需要FreeTDS。

brew install freetds

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

brew install php5x --with-mssql  
brew options php5x

如果您需要更多的扩展。

根据Jon Watson的评论,

我试过第二步,但没用。在这里查看我的问题https://github.com/laravel/laravel/issues/2180

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

我还尝试了Laravel的linux ODBC驱动程序(有2个,谷歌一下),两者都不太好用。尽管我的简单测试php同时适用于DBLIB和ODBC(使用官方的microsoftodbcunix驱动程序编译)。

步骤4肯定有效,但您必须使用IIS才能获得最佳稳定性。

这就剩下第1步了。或者,

抛弃Laravel4并使用好的ol‘AdoDBhttp://adodb.sourceforge.net/我自2006年以来一直在使用它,并且仍然工作得很好(尽管不像Laravel那样现代)http://docs.moodle.org/20/en/Installing_MSSQL_for_PHP

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