2016-07-22 10 views
3

経由でODBC接続のために私はUbuntu LinuxのマシンからODBCを介してネットスイートに接続しようとしています。私はすべてのセットアップを持っている。これは、シェルとPHPのコマンドラインを介して動作します。しかし、私がしようとするとPHPのWeb要求を経由してこの接続を行う際に、それがこのエラーで失敗します。更新LD_LIBRARY_PATHシステムワイドPHP7.0-FPM

Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib '/opt/netsuite/odbcclient/lib64/ivoa25.so' : file not found, SQL state 01000 in SQLConnect in 

それはシェルから動作させるために、私はreadme.txtを経由して(私の.profileにこれを追加する必要がありましたそれは

ODBCINI="/opt/netsuite/odbcclient/odbc64.ini" 
OASDK_ODBC_HOME="/opt/netsuite/odbcclient/lib64" 
LD_LIBRARY_PATH="/opt/netsuite/odbcclient/lib64${LD_LIBRARY_PATH:+":"}${LD_LIBRARY_PATH:-""}" 
export ODBCINI 
export OASDK_ODBC_HOME 
export LD_LIBRARY_PATH 

問題がLD_LIBRARY_PATH設定であると思われる)NetSuiteのドライバが付属していました。私は私のodbc_connect()文を実行するためのWeb要求を行うと、他のオプションがあり、それは

"Note: You can only set this environment variable inside an interactive shell." 

NetSuiteのドライバがLD_LIBRARY_PATHにこの更新プログラムを必要と述べているページの下半分の方法についてthis pageに気づきましたか?

私が試したと

必要な書類 /etc/environmentに&輸出(それが動作しないと述べたにもかかわらず)
  • を追加/etc/init.d/php7.0-fpmスクリプト
  • . /etc/odbcinst.iniを追加
    • putenv()
    • で失敗しました新しいファイルに/opt/netsuite/odbcclient/lib64を追加しました/etc/ld.so.conf.d/netsuite.conf

    私は上記のリストから最後のものをしたとき、私は成功しsudo ldconfigを実行しましたが、&クエリ接続しようとすると、このエラーを得た(ゴミの束が、異なるエラーが!):

    [unixODBC]�pV�,8�(8��|D�x������H�R��ut� 
    (8eow�ut�(8�����|`gx�0x�pV�K����������M0�0�N��M0� ������4� 
    �0d��Ryy 
    
  • 答えて

    1

    他のISQL接続結果から違って見えることができません。私は基本的にPHPスクリプトを実行するために必要な環境変数をエクスポートするbashスクリプトを作成しました。私のnetsuite-odbc.shスクリプトの内容は次のとおりです。今すぐ接続してクエリを実行できます。

    ODBCINI="/opt/netsuite/odbcclient/odbc64.ini" 
    OASDK_ODBC_HOME="/opt/netsuite/odbcclient/lib64" 
    LD_LIBRARY_PATH="/opt/netsuite/odbcclient/lib64${LD_LIBRARY_PATH:+":"}${LD_LIBRARY_PATH:-""}" 
    export ODBCINI 
    export OASDK_ODBC_HOME 
    export LD_LIBRARY_PATH 
    
    /usr/bin/php /home/user/netsuite-odbc.php 
    
    0

    私はしないでください答えはありますが、私はこの時点でコメントすることはできません...しかし私は有用な情報を持っています。

    私は長い間、Linux用のこのNetSuiteのODBCドライバで苦労してきました。私が学んだことの一つは、ドライバがUbuntu 14.02と互換性がないということでした。それは2017年4月にサポート外となる12.02と互換性があります。しかし、私がセットアップしたUbuntu 12.02 VMでは、これと同じエラーが表示されます。 2016年5月下旬に互換性に関する記事を掲載しました。私はそれをあきらめて、Windowsマシンで開発しただけです。

    私はISQLを使用するときに同じエラーを取得していますし、私のPHPコードで同じエラーを得ていました。私はパーミッションがrとxの誰かを持つように設定されているが、うまくいきませんでした。

    sudo ldd /opt/netsuite/odbcclient/lib64/ivoa25.so 
    

    私はこれを取得:このコマンドを実行

    drwxr-xr-x 2 root root  4096 Jan 8 2016 . 
    drwxr-xr-x 8 root root  4096 Jul 28 16:45 .. 
    -rw-r--r-- 1 root root 1534752 Jan 8 2016 ddtrc25.so 
    -rw-r--r-- 1 root root 260915 Jan 8 2016 ivldap25.so 
    -rw-r--r-- 1 root root 12137 Jan 8 2016 ivmgan25.so 
    -rw-r--r-- 1 root root 124833 Jan 8 2016 ivmgapi25.so 
    -rw-r--r-- 1 root root 437482 Jan 8 2016 ivmghu25.so 
    -rw-r--r-- 1 root root  1521 Jan 8 2016 ivoa25.ini 
    -rwxr-xr-x 1 root root 3255664 Jan 8 2016 ivoa25.so 
    -rw-r--r-- 1 root root 14920460 Jan 8 2016 libddicu25.so 
    -rw-r--r-- 1 root root 16010036 Jan 8 2016 libicudata.so.42 
    -rw-r--r-- 1 root root 1608359 Jan 8 2016 libicuuc.so.42 
    -rw-r--r-- 1 root root 354900 Jan 8 2016 libivoa25m.so 
    -rw-r--r-- 1 root root 1172888 Jan 8 2016 libodbcinst.so 
    -rw-r--r-- 1 root root 1659688 Jan 8 2016 libodbc.so 
    -rw-r--r-- 1 root root 1457352 Jan 8 2016 odbccurs.so 
    -rw-r--r-- 1 root root 2154752 Jan 8 2016 openssl700.so 
    

    私が手に:彼らはディレクトリにあるので、意味がありません

    linux-vdso.so.1 => (0x00007ffebfb4b000) 
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fcfefc08000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcfefa04000) 
    libicuuc.so.42 => not found 
    libicudata.so.42 => not found 
    libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fcfef7f6000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcfef5d8000) 
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fcfef2d4000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcfeefce000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fcfeedb8000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcfee9f3000) 
        /lib64/ld-linux-x86-64.so.2 (0x00007fcff01b6000) 
    libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fcfee7cf000) 
    

    「見つからない」ファイルのアクセス許可に関係なくファイルが見つかりません。私はこれらのファイルへのシンボリックリンクを作成したとき、私はivoa25.so見つからないエラーを取得することができたが、その後、この1だ:

    Warning: odbc_connect(): SQL error: [unixODBC], SQL state in SQLConnect in/var/www/html/DataBase.php on line 5 
    

    は接続できませんでした:

    このエラーに関しては、それはあまりにも私を助けてしまうので、私はあなたがこの問題を解決する手助けをしてみたい

    に...

    Its a guess, but maybe try setting ODBCINI, the driver may need that to find the ini file 
    export ODBCINI=/etc/odbc.ini 
    

    が、それはどちらか何もしなかった:私はunixODBC.orgでみんなに連絡し、彼らはこれを言いました...私たちはうそをつくldはメモを比較します。

    $ odbcisql64 -m 0 
    

    コマンドを使用して、ISQLを使用して、まだ場所でエラーが発生して

    UPDATE

    。これを実行すると、それは次のようになります。

    DataDirect OpenAccess SDK Interactive SQL (ODBC) Version 7.2 
    (c) Copyright 1995-2013 Progress Software Corporation. All rights reserved. 
    
    Program Locale:en_US.UTF-8 
    ISQL> 
    

    このように接続しようとすると、接続文字列を使用して

    ISQL> connect "user"*"pw"@netsuite 
    

    私は

    SQL: connecting to database: netsuite... 
    SQL: Can't connect to database netsuite 
    The following error information describes the failure 
    ODBC Call  = SQLConnect() 
    SQL State  = 01000 
    Native error = 0(0) 
    Error Message = [unixODBC][Driver Manager]Can't open lib  '/opt/netsuite/odbcclient/lib64/ivoa25.so' : file not found 
    SQL: isql_connect() failure 
    Elapsed time 2 ms. 
    ISQL> 
    

    ...同じエラーが出ます...しかし、私はこのより一般的なisqlコマンドを使用して "接続する"ことができます(少なくとも接続するようです)

    $ isql NetSuite user pw 
    

    ...接続します。これは、Ubuntuの14と12の両方で動作します。しかし、私は、任意のSQLが動作するコマンドと、それはそうソリューションが予想よりも簡単になってしまっ

    +---------------------------------------+ 
    | Connected!       | 
    |          | 
    | sql-statement       | 
    | help [tablename]      | 
    | quit         | 
    |          | 
    +---------------------------------------+ 
    SQL> 
    
    +0

    私が今やっていることを見て、それがあなたの問題を解決するかどうかを見てください。 – Nathan

    +0

    私はいくつかの変更を行い、isqlの作業とコンソールで動作するPHPコードを持っていますが、私のブラウザではまだエラーが出ます。パーミッションと所有権、またはそれを修正するのに役立つその他のApache2の設定について、何が言えますか? – mudrock

    +0

    申し訳ありませんが、私はApacheを手伝っていません。私はnginxを使用し、CLIでNetSuiteを実行します。あなたは私のOPで試したすべてのオプションを試しましたか? ( 'putenv'など) – Nathan

    関連する問題