3月, 2014 からの更新 コメントスレッドの表示切替 | キーボードショートカット

  • 西川 洋平 6:56 PM | 2014年3月11日 パーマリンク |
    タグ: ,   

    PDOを使ってのDB接続時のエラー 

    CentOs上のphpからPDOを使ってSQLServerに接続しようとしたところ、以下のエラーが表示されて繋がらないとのことで軽い気持ちで解析を手伝っていたら、unixODBCだったりFreeTDSだったりと複雑な環境もあり、・・・・・・ハマった。

    ◆エラー・・・というよりExeptionのメッセージ
    [unixODBC][FreeTDS][SQL Server] Unable to connect: Adaptive Server is unavailable or does not existtest

    ◆ソース

    ?php
    $dsn = 'odbc:AAAA';
    $user = 'XXX';
    $password = 'YYY';
    
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    ?

    ◆解決した方法
    今回の問題はSELinuxとやらの設定だった。参考→ ここ
    httpd_can_network_connect がoff(無効)になっているのを有効に変えただけ。

    設定の確認コマンド

    # getsebool httpd_can_network_connect
    httpd_can_network_connect --> on  (有効の場合)
    httpd_can_network_connect --> off (無効の場合)

    設定の変更コマンド

    # setsebool httpd_can_network_connect 1

    ※getseboolで確認だったので、勘でsetseboolでやってみたところできてしまった。1にしたらonになったので、0だったらoffだと思
    ※真面目に使う人はちゃんと調べましょう。

    unixODBCでも、FreeTDSでも、SQL Serverでも、apacheでも、php.iniでもないとか・・・ハマれるっ!!    で、SELinuxって何?

    聞いてみたところ、SELinuxはdisableにしちゃうのが普通らしい。

     
  • 西川 洋平 12:58 PM | 2014年3月5日 パーマリンク |
    タグ:   

    XPからWin7の共有フォルダが見えなくなった 

    なぜだか見えなくなったらしい。

    アクセスすると…
    「XXXXXXにアクセスできません。このネットワーク リソースを使用するアクセス許可がない可能性があります。アクセス許可があるかどうかこのサーバーの管理者に問い合わせてください。」
    などと出ている。

    いろいろ試した結果、共有側(Win7)の「LAN Manager 認証レベル」とやらを変更すると解決した。

    ※Win7 ”Pro”以上なら以下の手順で。

    1. 「コントロールパネル > 管理ツール > ローカルセキュリティポリシー」 をダブルクリッククリック
    2. 左のツリービューから「セキュリティの設定 > ローカルポリシー > セキュリティオプション」を選択
    3.  「ネットワーク セキュリティ:LAN Manager 認証レベル」をダブルクリック  (ちなみに、ここが未定義となっていた。)
    4. 「ローカル セキュリティの設定」タブ内の設定を「NTLM 応答のみ送信する」に変更し、OKボタン
    5. 再起動

    ※ちなみに、Win7 Homeなどでは、上記の設定画面とやらがないらしいので、レジストリを直接修正しないとダメっぽい

    問題の解決には Windows 7 の Security を下げる必要が有ります。

    Windows 7 では secpol.mscから→「ネットワークセキュリティ:LAN Manager 認証レベル」の設定をしなければなりません。しかしこのsecpol.msc機能は多くの方が使用しているHome Premiumでは使用できません。

    そこで初心者には危険ですが、Windows Directory に有る regedit.exe を立ち上げ、以下のキーを付加する事で解決できます。

    1. HKEY_LOCAL_MACHINE¥System¥CurrentControlSet¥Control¥Lsa を開きます。
    2. LmCompatibilityLevel をダブルクリック(または右クリックて[修正]を選択)して値のデータ
    を [2] にする。
    (注意)LmCompatibilityLevel が存在しない場合は(通常は存在しません)左側のレジストリツリーの Lsa上か、Lsaを選択した状態で右側の何もないところで、右クリックし、 [新規]-[DWORD」を選択します。「新しい値 #1」というエントリーが作成されます。「新しい値 #1」という名前を「LmCompatibilityLevel」に変更します。そして、「LmCompatibilityLevel」を右クリックして[修正]を選び(またはダブルクリック)値のデータを変更します。横に出ている10進、16進はどちらでもかまいません。(2の値は10進でも16進でも変わりません)

    レジストリーを変更すると即その変更が反映されるので保存という操作は有りません。

    regedit.exe を閉じて、Windows 7 を再起動します。

    参考 → ここ

     
c
新規投稿作成
j
次の投稿 / 次のコメント
k
過去の投稿 / コメント
r
返信
e
編集
o
コメント表示 / 非表示
t
トップへ移動
l
ログインへ
h
ヘルプを表示 / 非表示
Shift + ESC
取り消し