發現PHP用在傳統企業(用MSSQL、ORACLE資料庫的企業)真的好少啊。
最近有個項目,需要在開發、生產環境都能部署PHP系統,用PDO對象,要訪問MYSQL、MSSQL、ORACLE這幾種資料庫。
請問該怎麼實現,用PHP的PDO在mac、windows、windows server下配置訪問這些資料庫?mssql版本最低2005,目前用的xamppIntegration Environment。
如果不行,只有換成.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,目前用的xamppIntegration Environment。
如果不行,只有換成.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了。
呵呵。