PHP Archive

SQL Server Driver for PHP 1.1でUTF-8に対応するみたい

以前の記事

で書いたようにPHPからSQL Serverを弄る際には何かとトラブルが起こりがち。

PHPもSQL ServerもUnicodeで動かしているのに、問い合わせると有無を言わさずSJISで帰ってくるなんて現象もあるみたいで、自分のほうでも同様の現象に苦しめられました。
[PHP-users 30792] SQL Serverで、nvarcharの値がShift_JISで帰ってくる
いちいちmbstringで変換するのが面倒なんですよね。

ところで今日たまたま調べ物をしていると、こんなエントリーが。

Working on version 1.1 of the SQL Server Driver for PHP

SQL Server Driver for PHPはマイクロソフトが自ら開発しているPHPドライバですが、その次期バージョンでは以下のような追加があるそうです。

  1. Support for PHP 5.3
  2. Support for handling UTF-8 strings in parameters and resultset values,without requiring calls to iconv or other extensions.
  3. Support for scrollable results and row count

これは・・・

PHP5.3サポートはいいとして、2番目が気になりますね。

For UTF-8 strings, we are working on adding support for this and other character sets to the extension. Having the SQL Server Driver for PHP handle UTF-8 strings means that the extension will handle the translations between UTF-8 and UCS-2 (little endian) since the SQL Server database engine does not currently support the UTF-8 character set. We’re working on handling parameters and resultset values using UTF-8, as well as handling the query strings in UTF-8 format.

SQL ServerのエンジンはUTF-8をサポートしてないけど、パラメータとリザルトセットで使えるようにしてる途中よ って感じみたいですね。
これがあればいちいちmbstringやiconvを使わなくてよくなりそうなので期待です。

Zend_Formが分からない

今開発しているシステムはZend Frameworkをふんだんに利用しているものなんですが・・・

データのバリデーションの機構もあるらしいZend_Formの使い方が全然分からない!
たとえばZend_Formで自由にレイアウトを作りたいときはどうすれば・・・?
そのあたりの情報がまだまだ少なすぎて非常に苦労してます。

基本的な使い方ならそれなりにあるのになあ・・・。

Concrete5のドキュメントが見あたらない

Concrete5をUDCPのトップページにも採用しました。
もともと何も中身のないトップページだったので、今もConcrete5入れたばかりのデフォルトの状態です。
まあしばらくこのままでも特に困ることはないだろう・・・。

今回UDCPに採用したのは、ここでいろいろ弄ってConcrete5の使い勝手を確かめるという目的がメインです。なので、テーマも自作したりしてConcrete5でなにがどこまで出来るのが知りたいところなのですが・・・。
テーマやアドオンに関する資料が全然見あたらない・・・。

日本語資料は皆無。
というか公式サイトにすら見あたらない気がするんですが、探し方が悪いだけ?
フォーラムを読むといくらかの情報は得られるようですが・・・。

//////追記
helpのページに情報がありました。
http://www.concrete5.org/help/

SugarCRMのActive Directory連携が分りづらい

  • 2009-02-02 (月)
  • PHP

SugarCRMをちょくちょく弄ってます。

SugarCRMはユーザー認証にLDAPを利用出来る機能があって、当然Active Directoryも利用可能なんですがその設定がいまいち分りづらかった。というか横にヒントらしきものが書いてあるんだけど、それが全く役に立ってません。

http://www.sugarcrm.com/wiki/index.php?title=Integrating_SugarCRM_with_Windows_Active_Directory

このWikiに設定方法があってようやく分った次第・・・。

システム設定の中のLDAPを有効にチェックを入れると、詳細を入力する欄が出てくるので

サーバー名:ADコントローラのサーバー名orアドレス
ポート番号:389
ベースDN:OU=users,DC=example,DC=local(適宜読み替えてください)
バインド属性:userPrincipalName
ログイン属性:samAccountName
認証ユーザー名:ユーザー名@ドメイン(user@example.com)
認証パスワード:そのユーザーのパスワード

こんな感じです。
ログイン属性のところなんて、完全にヒントが間違ってるやん・・・。

Zend_Auth_Adapter_OpenIdは今のところOpenID2.0に非対応

やられた。

Zend FrameworkにはOpenID認証用のアダプタが用意されていて、それを使えばOpenID対応サイトが作れる・・・と思ってたんだけど
http://framework.zend.com/manual/ja/zend.auth.adapter.openid.html

なにやら、Zend Framework1.7の段階ではまだOpenID2.0に対応してない様子。
何度やってもYahoo!やmixiでの認証が出来ないから変だと思った。

なので、現段階ではPHP OpenID Libraryを使うのが良いと思われます。PHP OpenID Libraryを使って、Zend_Auth_Adapter_Interfaceを実装して自作の2.0対応アダプタを作るのが良いかもしれないね。

PHPでSQL Serverをつつくとntextでエラーが出る

Zend FrameworkのZend Dbを使っていた時の話。
SQL Serverで動いているDBをつつくと、次のようなエラーが。

「Unicode のみの照合順序の Unicode データまたは ntext データを、DB-Library (例 ISQL) または ODBC バージョン 3.7 以前を使用しているクライアントに送信できません」

むむ、なんと。
どうもntextを使うと怒られるらしい。
ではnvarchar(MAX)はどうか?と思って試してみるも、こちらも同じ。
nvarchar(255)とかだと問題なし。

うーん、不便。
不便だけどそういうものだと割り切って使うしかないようだ。

あるいは、SELECTで読んだときにCASTしてやればうまくいくようだ。

Zend_DbでSQL Server 2005が使えない

ZendFrameworkのZend_Dbを使おうとしたところ、まともに動かないトラブルが発生。

以前のエントリーにも書いたとおり、SQL Server 2005へ接続する際には小細工が必要だったんですが、今回はそれとは違う様子。というのも、前回はコネクトが出来ないというトラブルだけども、今回はコネクションはうまくいく。

が、query()メソッドでSQL文を書くと、エラーが出る。
しかも、エラーが出ない場合もある。

SELECT * FROM テーブル名

これだとエラーが出るが

SELECT カラム名 FROM テーブル名

これだとエラーが出ない。

なんだそりゃ。

どうやら、unicode周りでトラブルが発生している様子・・・。
結局調べるのも時間かかるので、Zend_DbはあきらめてPDOのODBCドライバを利用することに。

PHPでSQL Serverは鬼門なのかな・・・。

ホーム > PHP

Search
Feeds
Meta

Return to page top