「お仕事」カテゴリーアーカイブ

Linux上のPHPからSQLServerに接続する

sqlserver表題の作業をやったんですが、物凄く苦労しました。ググれば情報は出てくるんだけど、書かれた通りやっても上手くいかなかったり。

2020年版はこのページの一番下を参照

サーバの構成とかによってもやり方変わるしね。詳しい方にアドバイス貰いつつ何とか出来ました。

サーバ
Windows Server 2003 R2 SP2
SQLServer 2008 EXPRESS

クライアント
Red Hat Enterprise Linux 4
PHP5.2.14(PDOは使える状態)

SQLServerと外部接続するにはODBCを使います。PHPで使えるのを調べてみるとPDO_DBLIBです。ネット上ではこれをインストールするには

# pecl install pdo_dblib

と書かれてたけど、エラーで出来ず。仕方ないので自分でコンパイルする事に。

その前にFreeTDSが必要なのでそっちを入れます。これはyumでインストールできた。

# yum install freetds-devel-0.64-1.el4.rf

設定ファイルfreetds.confは以下のように書く。

# vi /usr/local/etc/freetds.conf
[global]
 port = 1433
 tds version = 8.0
 text size = 2147483647
 charset = sjis
 client charset = UTF-8

[mssql]
 host = (IPアドレス)
 port = 1433
 tds version = 8.0
 charset = sjis
 client charset = UTF-8

PDO_DBLIBをコンパイルしてみると…エラー出る。共有ライブラリを認識させないとダメらしい。

# vi /etc/ld.so.conf
/usr/local/lib
# ldconfig

今度こそ出来た。

# tar xvf PDO_DBLIB-1.0.tar
# cd PDO_DBLIB-1.0
# phpize
# ./configure
# make
# male install

pdo_dblib.soが作成されたので、それを/usr/local/php5/lib/php/extensions/5.2.14/にコピーしてからextensions.ini編集。

# vi /usr/local/php5/etc/extensions.ini
extension=pdo_dblib.so

そしてApache再起動。phpinfo()で確認するとdblib入ってました。これで完了かと思ったらまだダメで、unixODBClibiconvが必要だった。

# tar xvzf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11
# ./configure --enable-gui=no
# make
# make install

設定ファイルodbcinst.ini

# vi /usr/local/etc/odbcinst.ini
[FreeTDS]
Driver    = /usr/lib/libtdsodbc.so.0
Setup     = /usr/lib/libtdsS.so
CPTimeout =
CPReuse   =
FileUsage = 1

設定ファイルodbc.ini

# vi /usr/local/etc/odbc.ini
[ODBC Data Sources]
freetds = FreeTDS ODBC Driver

[freetds]
Driver = FreeTDS
Description = MSSQL
Trace = No
Servername = mssql
Database = (データベース名)
Port = 1433

[Default]
Driver = FreeTDS

環境変数を設定しないとちゃんと動かないので設定。

# export ODBCINI=/usr/local/etc/odbc.ini
# export ODBCSYSINI=/usr/local/etc

libiconvコンパイル

# tar xvzf libiconv-1.10.tar.gz
# gunzip libiconv-1.10-cp932.patch.gz
# patch -p0 < libiconv-1.10-cp932.patch
# cd libiconv-1.10
# ./configure
# make
# make install

ここまでやってから、ようやくSQLServerにテスト接続。

# tsql -S mssql -U (ID) -P (パスワード)

“1>”って出たら接続成功です。quitで切断し、今度は別のやり方で接続。

# isql -v mssql (ID) (パスワード)

エラーで動かない…とりあえず放置してPHPで接続を試す。

<?php
$dbh = new PDO('dblib:host=(IPアドレス):1433;dbname=(データベース名)', '(ID)', '(パスワード)');
?>

繋がった! この記述方法もネット上では書いてあることバラバラで苦労したけど、とにかく接続できました。

上記の事を手探り状態で試行錯誤しつつやっていったんで、かなり大変でした。ホントはWindows Serverが客先にあって、それの外部接続だODBCだポート開放だをやりに行ったのも大変だったんだけど、もういいや。

これでようやくシステム開発に取り掛かることが出来ます。

Centos 8.1 + PHP 7.2 + SQLServer 2008の場合

2020年時点でSQLServer 2008がサポート終了していたせいで、今回も苦労しました。dblibからsqlsrvに切り替わり、最新のODBC 17だと接続できないので13を使い、pdo_sqlsrvも5.8から5.3にダウングレードさせました。

まずODBCインストール(CentOS 8版は使わない)。

# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
# yum remove unixODBC
# ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1

次にここからCentOS 7.2用のPHPドライバをダウンロード(こちらもCentOS 8版は使わない)。解凍して、php_sqlsrv_72_nts.so と php_pdo_sqlsrv_72_nts.soを以下にコピー。

/usr/lib64/php/modules/

いちおうパーミッション変更。

# chmod 755 /usr/lib64/php/modules/pdo_sqlsrv_72_nts.so
# chmod 755 /usr/lib64/php/modules/sqlsrv_72_nts.so

PHPの設定ファイルを作成して書き込み。

# vi /etc/php.d/20-sqlsrv.ini
extension=php_sqlsrv_72_nts.so

# vi /etc/php.d/30-pdo_sqlsrv.ini
extension=php_pdo_sqlsrv_72_nts.so

反映させる。

# systemctl restart php-fpm.service
# systemctl restart httpd.service

PHPから接続。ポート番号の前がコロンからカンマに変わっててハマった(汗)

$dbh = new PDO('sqlsrv:Server=(IPアドレス),1433;Database=(データベース名)','(ID)','(パスワード)');

こうして見ると簡単だけど、ここまでたどり着くのに1週間かかったよ… SQLServerとかもう勘弁。

打ち合わせに行く

久しぶりに打ち合わせ行ってきました。

新規の数社と打ち合わせしたんだけど、そのうちの1社は勢いのある会社でした。社長がとにかく即断即決。デモを見たら「わかりました。では契約書を送ります」とその場で成立。「数週間後に説明会開いて年内に開始しましょう」と、トントン拍子で話が進みました。

儲かってる所はスピードが違うね。そういえば知人の儲かってる社長さんも、ワンマン気味だけど、すぐに決めてどんどん進めていく人だった。失敗もするけど、数をこなして成功を増やしてる感じかな。

こういう良い所は見習わないとなぁ。

渋谷で打ち合わせと飲み

今日は渋谷で打ち合わせしました。広告代理店の人とかと打ち合わせです。なかなか魅力的な企画だったけど、スケジュールきついので果たしてどうするか。

その後、近くの居酒屋で飲みました。ここでも幾つかの新規案件について話し合ったけど、まぁ全部は出来ないから、どの案件をやるべきかちゃんと見極めないとね。

そうそう、居酒屋で食べた馬刺し美味しかったですw

六本木でお仕事

今日は六本木で仕事してきました。取引先のパソコンとかネットの設定をいじる作業です。

昼から行ってちまちまと設定。未だにWindowsXPのSP2で各種アップデートを全然してないPCとかあったよ。オフィスは警備会社入ってて、社内に防犯カメラもあるというのに、杜撰すぎる。

まぁしかし儲かりまくってるようで羨ましい。六本木にオフィス構えてるだけでも凄いのに、今度新たに1フロア借りることになったとか言ってました。社員も1年前に来た時に比べて3倍くらいになってたし(今日は休日だから少なかったけど)。

俺が独立した後に出来た会社なのでちょっと悔しい。俺も負けられん。

打ち合わせに行く・雑談

最近全然ブログ更新してないので、打ち合わせに行った話など。

基本的に仕事のやり取りはメールかSkypeでやってるけど、たまに打ち合わせに行きます。まぁ最近は打ち合わせといっても、進捗報告くらいしかないんだけど。

今日も進捗を聞くだけだったので、隅っこでボーっとしてたよ。しかしどこの会社も人の入れ替わりが激しいなぁ。某社は1年前にいた社員が1人も残ってなかったり(経営者だけ同じ人)。これは極端な例だけど。

そういえば、新規ビジネスを立ち上げる時にはいつも特許を10件申請するという話を聞きました。やっぱりちゃんとしてる所は凄いなぁ。

営業の打ち合わせも聞いてたんだけど、営業ならではの計算式が面白いね。成約率がこのくらいで、客単価がこれくらいだから、この商品を買って頂ければ十分元が取れます、みたいなのを試行錯誤して作ってました。

明日も打ち合わせがあります。今月締め切りの仕事が幾つかあるので、あんまり時間取られたくないんだけどね…

『アプリやろうぜ! by GMO』不採用になったのでこれまでの経緯など

表題の通り。終わったら書こうと思ってたんだよね。

3月上旬
最初にアプリやろうぜ知ったのがこの時期です。ソーシャルアプリ開発に興味があったので、お金は出すしサポートもする、という豪気な企画に参加しようと思いました。

3月18日
とりあえずキックオフカンファレンス申し込んだら当選したので参加。その時の内容は『アプリやろうぜ! by GMO』キックオフカンファレンスに参加するに書いてます。そういえば何故かシールバッジ貰ったなぁ。

3月下旬
エントリー。ちなみに申し込みは、企画持ってるチーム(法人個人)と企画持ってない個人で分かれてて、俺は企画持ってない個人の方で。簡単な職務経歴書を提出しました。

4月下旬
書類審査合格のお知らせ到着。予定より審査が2週間くらい遅れたらしい。合格は個人が100人だけど、申し込みは何人だったんだろ。裏では企画ありチームの審査が行われてて、550件のうち30チームが合格したとか。チームと個人のマッチングのため、詳細な履歴書職務経歴書を提出しました。

5月上旬
いきなりGMOから電話が来る。職務経歴書を見たチームとマッチングしたいから、スケジュールを教えてくれとの事。後から聞いた話だけど、この時チーム側の人達は、職務経歴書の束を持ち帰り不可で渡されて、必死にチェックしたらしいw

5月中旬
この時期、条件が変わってGMOに子会社化を持ちかけられ、参加そのものを辞退する会社が出てきたり、個人でも辞退表明する人達が出てきたりと、不穏な雰囲気に。あとFuture of Appsというアプリやろうぜの競合が現れたり。

5月下旬
マッチング面談。ただ最初渋谷でやるって言ってたけど、Skypeのビデオチャットでの面談に変わりました。カメラ越し面談なんて初めてだよ。ともかくSkypeで数社と面談。その後、実際会っての面談もしました。

で、最終的に不採用になった訳だけど、「社員もしくはフルタイムで入ってもらいたい」と、みんな同じような事を言っておりました。社員前提か…もしかしてこれは就職活動だったのか。まぁ就職活動でないにしても、期間が短いし毎日来れる人の方が良いよなぁ。どうも最初から俺には合わない企画だったっぽいね。

長々とやっておいて、そんなオチでした。

3時間以上打ち合わせる

今日は夕方から数社で集まって打ち合わせしました。

最初は既存商品の営業について、営業マンを交えての打ち合わせ。俺はサッパリわからないので蚊帳の外だったけど、誰が行っても顧客に過不足なく説明出来るような仕組み作りは難しいね。

次は技術者と新規商品の打ち合わせ。システム上、どうしても上手く組み合わさらない箇所があったんだけど、話し合う内に解決方法が見つかりました。素晴らしい。何人か集まると良いアイデアが出るね。

とまあ、そんな感じでやってたら3時間以上経ってたよ。久しぶりに長く打ち合わせたなぁ。

その後は数人で近所の居酒屋に行きました。しかしオフィス街だったので、どこも満席で店を探すのに苦労したり。4軒目で入れた。

ビジネスが上手く行くといいなぁ。

『アプリやろうぜ! by GMO』キックオフカンファレンスに参加する

表題にあるイベントに当選したんで、行ってきました。

場所は渋谷のセルリアンタワー東急ホテル。見覚えのある建物だなぁと思ったら、GMOの入ってる所で、そういえば前に打ち合わせで来たんだった。

GMO代表熊谷正寿氏の挨拶から始まり、グリーの社長にしてこの前世界長者番付に載った田中良和氏、モバゲータウン(DeNA)の取締役守安功氏、さらにビデオレターながらmixi社長の笠原健治氏も登場。

日本のSNSの代表でありライバル達が一堂に会するなんて、これは凄いことではなかろうか。どこもソーシャルアプリは去年くらいから始めたばかりで、まだまだチャンスがあるという話でした。

にもかかわらず、既に月1億円近い売り上げのアプリもあるんだとか。初期開発15人月程度の工程でその規模まで行けるとか、夢が広がるね。

まぁあくまでそれは先行者利益であって、今から参入するんなら、同じ事やってもダメだと思うけど。

ソーシャルアプリは全くやってなかったんで、今回のような場の提供というのは、実に興味深いです。一人じゃなかなか出来ないからね。

という事で、俺も個人としてエントリーするつもりですが、特に一芸に秀でてる訳じゃないから、厳しいかもなぁ。

横浜で打ち合わせと飲み

今日は横浜とかで打ち合わせしました。

まずはランチミーティング。「油っぽいものばかり食べて…」と言われた。気をつけます。

次に美容師と打ち合わせ。時間かかるって言ったら「3月4月が売り込み時期だから早めに」と言われた。頑張ります。

そして夜は取引先の役員達と飲み。「早くシステム稼働させないと、興味を持った顧客にも飽きられちゃうから」と言われた。頑張ります。

同時に複数の作業は出来ないのに、締め切りは同時に来ちゃうんだよね。まだしばらく忙しくなりそうです。

横浜で打ち合わせ

今日は横浜とかで打ち合せしました。

ランチミーティングすると言うのでついて行ったら、懐かしい人に会ったよ。ただ、かつて業界にその人ありと言われたやり手の人なのに、今は会社を畳み住む所も失いお金に困ってるとの事。やっぱりどこも厳しいんだなぁ。

ご飯食べてから次の打ち合わせへ。今月中にやる仕事が色々出てきたよ…また忙しくなりそうだ。早く収入を安定化して、細かい仕事を請けずに済むようにしたいなぁ。

ちなみに帰りは凄い雪でした。こんなに降ったの久しぶりだね。

しかし、久しぶりに打ち合わせして思ったけど、喋るの下手になってたよ。最近ずっと引き篭ってて人と会わなかったからなぁ。

もっと外に出ないと、人としてヤバいかも(汗)