发现php用在传统企业(用mssql、oracle数据库的企业)真的好少啊。
最近有个项目,需要在开发、生产环境都能部署php系统,用pdo对象,要访问mysql、mssql、oracle这几种数据库。
请问该怎么实现,用php的pdo在mac、windows、windows server下配置访问这些数据库?mssql版本最低2005,目前用的xampp集成环境。
如果不行,只有换成.net了。。。
__
抱歉,可能我没有完全说清楚。
我试过php手册上的,并且开启了extension=php_mssql.dll,extension=php_pdo_mssql.dll,但是无论使用$dsn = mssql:host=10.1.1.1;dbname=test;还是$dsn = dblib:host=10.1.1.1;dbname=test;。
在new pdo的时候,都会提示我错误:uncaught exception 'pdoexception' with message 'could not find driver'。
我在phpinfo那看到pdo drivers里面只有mysql,pgsql,sqlite三项,猜想可能是因为mssql for pdo的驱动没有,但是只搜索到for windows的。
同时,看到在mac下用freetds的(他没有说是xampp还是什么环境),但又需要xcode和另一个什么组件,还要编译,我就在想,难道没有更简洁一点的方法吗?
所以,我想提一个比较完整的问题,希望有这方面实践的高手能够系统地解答一下,同时也方便搜索引擎给sf导流(因为我发现搜索引擎对sf的收录率非常快),以后还有谁碰现类似的问题,不用再去多拼西凑地找方法尝试,因为这真的非常费时间和精力,而且学不到东西。
回复内容: 发现php用在传统企业(用mssql、oracle数据库的企业)真的好少啊。
最近有个项目,需要在开发、生产环境都能部署php系统,用pdo对象,要访问mysql、mssql、oracle这几种数据库。
请问该怎么实现,用php的pdo在mac、windows、windows server下配置访问这些数据库?mssql版本最低2005,目前用的xampp集成环境。
如果不行,只有换成.net了。。。
__
抱歉,可能我没有完全说清楚。
我试过php手册上的,并且开启了extension=php_mssql.dll,extension=php_pdo_mssql.dll,但是无论使用$dsn = mssql:host=10.1.1.1;dbname=test;还是$dsn = dblib:host=10.1.1.1;dbname=test;。
在new pdo的时候,都会提示我错误:uncaught exception 'pdoexception' with message 'could not find driver'。
我在phpinfo那看到pdo drivers里面只有mysql,pgsql,sqlite三项,猜想可能是因为mssql for pdo的驱动没有,但是只搜索到for windows的。
同时,看到在mac下用freetds的(他没有说是xampp还是什么环境),但又需要xcode和另一个什么组件,还要编译,我就在想,难道没有更简洁一点的方法吗?
所以,我想提一个比较完整的问题,希望有这方面实践的高手能够系统地解答一下,同时也方便搜索引擎给sf导流(因为我发现搜索引擎对sf的收录率非常快),以后还有谁碰现类似的问题,不用再去多拼西凑地找方法尝试,因为这真的非常费时间和精力,而且学不到东西。
windows版php内置了oracle驱动,在ext目录下:
php_oci8.dll
php_oci8_11g.dll
php_pdo_oci.dll
linux上如果自己编译的话则添加下面的configure配置项,比如:
--with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
--with-pdo-oci=shared,instantclient,/usr/lib/oracle,11.2
oracle instant client下载地址(60mb):
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
sql server driver for php (php_sqlsrv.dll和php_pdo_sqlsrv.dll,仅支持windows):
http://www.microsoft.com/en-us/download/confirmation.aspx?id=20098
linux上访问sql server可以用unixodbc+freetds
freetds: unix/linux下连接sql server和sybase的驱动.
--with-pdo-dblib=dir pdo: dblib-db support. dir is the freetds home directory
unixodbc是数据源管理器,管理由各种数据驱动建立的数据源名称.
freetds是免费的sql server/sybase在unix/linux体系中的驱动程序,
可以由unixodbc建立数据源名称,通过名称访问数据.
所以说php的话还是用mysql简单,因为php源代码直接内置了mysql驱动mysqlnd,基于mysqlnd提供mysqli/pdo_mysql支持.当然了,php也内置了sqlite引擎.
http://php.net/manual/zh/ref.pdo-oci.php
http://php.net/manual/zh/ref.pdo-dblib.php
其实我想说的是 php编译忒麻烦了 我一般选个集成整合环境 基本上就是右键菜单一勾的事
@murmur google出来的前几个基本是在stackoverflow上,我也大概浏览了一下,基本都像你这样回答的:丢个php.net的链接,或是微软驱动的链接。
或许是我不懂英文,看不明白吧,如果我英文好,也不上segmentfault了。
呵呵。