• ベストアンサー

コマンドライン実行からのDB接続不具合

こんにちは。 現在、PHP5、Apache2、Oracle9iで開発を行っておりまして コマンドラインからのバッチ処理を作成しております。 Webブラウザから実行すると正常に動作するのですが コマンドラインから実行すると oci_connect関数をコールしている部分以降の処理が 実行されずに困っております。 いろいろ調べてみましたが原因がわからなかったので どなたかアドバイスを御願いします。

  • PHP
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

>>・Oracleサーバとクライアントの文字コード > どこを確認すればよろしいでしょうか? 環境変数NLS_LANGの内容のことだと思います。 Webブラウザでは正常に動作するとのことですので、UTF-8に なっているのではないでしょうか。 なお、これは変更する必要はないです。 コマンドライン上で実行するときの文字コードを、 一時的にシフトJIS(パソコンのデフォルト文字コード)に できれば、 コマンドラインでもうまくいくように思うのですけれど、 正直なところあまり自身がありません。 申し訳ありません。

morimori7
質問者

補足

すいません! 以下のようなエラーが出力されておりました。 PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\Zend\Core For Oracle\lib\phpext\php_oci8.dll' -指定されたプロシージャが見つかりません。 ただ表示されたパスにはdllファイルは存在します。

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

Oracleはわかりませんが、dllをsystem32の中に放り込んでもだめでしょうか? http://www.google.co.jp/search?hl=ja&q=PHP+Warning%3A+PHP+Startup%3A+Unable+to+load+dynamic+library&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

morimori7
質問者

補足

ご回答ありがとうございます。 dllをsystem32に入れてみました解決できませんでした。 WINDOWSの配下にも入れてみましたが同様です。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

コマンドラインから実行したとき、「どのように」うまくいかないのでしょうか? 何かエラーメッセージは出ますか? 念のために、以下の情報についても、おわかりになる範囲で教えてください。 ・利用しているOSの種類とバージョン ・php.iniの[mbstring]セクションで設定している、「mbstring.何とか」の全内容 ・Oracleサーバとクライアントの文字コード

morimori7
質問者

補足

ご回答ありがとう御座います。 >コマンドラインから実行したとき、「どのように」うまくいかないのでしょうか? >何かエラーメッセージは出ますか? oci_connect以降の処理が実行されずエラーメッセージも何も表示されません。(これはコマンドラインからの実行に関係あるのかもしれませんが) >・利用しているOSの種類とバージョン WindowsXP SP2 >・php.iniの[mbstring]セクションで設定している、「mbstring.何とか」の全内容 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF8 mbstring.http_input = auto mbstring.http_output = UTF8 mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 >・Oracleサーバとクライアントの文字コード どこを確認すればよろしいでしょうか? 宜しく御願いします。

関連するQ&A

  • コマンドライン実行でDBにアクセスできない

    PHPで FirebirdのDBにアクセスするために、以下のようなスクリプトを作成しました。  $host = 'localhost:D:\testDB\test3.fdb';  $username = 'SYSDBA';  $password = 'masterkey';  $dbh = ibase_connect($host, $username, $password);  $stmt = 'SELECT * FROM test_table';  $sth = ibase_query($dbh, $stmt);       : これをWEBサーバで動作させるとうまくいくのですが、コマンドラインから実行すると以下メッセージが出てDBに接続することができません。 (ibase_connect関数のもどりで null が戻ってきています) Warning: ibase_connect(): Unable to complete network request to host "localhost". Failed to locte host machine. Undefined service gds_db/tcp. DBの指定でlocalhostをIPアドレス直接入力したり、DBファイルのパスのみの指定にして試してみたのですが、やはりブラウザではOK、コマンドラインでは駄目でした。 又、PDOを使ってアクセスしてみても、コマンドラインから実行した場合は駄目でした。 コマンドラインからDBアクセスできるように、何か必要な設定などがあるのでしょうか。  環境   PHP:5.2.4   DB:Firebird2.0.3   WEBサーバ:Apache2.2.4   OS:Windows2000 よろしくお願いします。

    • 締切済み
    • PHP
  • Oracle接続エラーについて

    こんにちは。 先ほど違うタイトルで質問させて頂いたのですが どうも検討違いの質問だったので新たに質問させて頂きます。 現在、phpでコマンドラインから実行すると以下のエラーが発生致します。尚、Webブラウザ上で実行すると正常に動作します。 windowsのダイアログ…プロシージャエントリポイント _zval_copy_ctor がダイナミックリンクライブラリ php5ts.dllから見つかりませんでした。 Apacheのログ…PHP Fatal error: Call to undefined function oci_connect() 環境は以下の通りです。 OS:WindowsXP PHP:5.0.5 Apache:2.0.59 Oracle:9i 宜しく御願いします。

    • ベストアンサー
    • PHP
  • コマンドラインからPHPを実行するには。(Windows)

    PHPスクリプトをコマンドライン上で実行しようと思い、 >php bookread.php と入力したところ、 >'cdc:\' は、内部コマンドまたは外部コマンド、 >操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されてしまいます。 おそらく環境変数の問題か、もしくは実行しようとしたディレクトリがいけないのかと思いますが、どうしたらよいのかわかりません。 Windowsで、OSはwinXP、また、phpはxamppで取得しました。 実行しようとしたファイルbookread.phpは c:\xampp\htdocs\_test というフォルダの中にあります。 どのディレクトリに移ってから行えばよいのか、もしくは環境変数にどう書き加えればよいのか、教えてください。 私が実行を試したディレクトリは、 c:\xampp\htdocs\_test> と c:\> です。 (ブラウザ上で他のPHPスクリプトを実行することは可能です。)

    • 締切済み
    • PHP
  • Oracleに接続できません

    http://oshiete1.goo.ne.jp/qa4731410.htmlでの質問を踏まえた上で、悩んでおります。 PHPにてサーバにあるOracle9iサーバに、 クライアント(Oracle10gクライアントインストール済み)からPHPで接続しに行きたいのですが、 oci_connect関数が上手く機能していないようで、接続できません。 oci_connectの引数には、oci_connect("ユーザ名", "パスワード", "tnsname.oraにある名称") を設定して、接続をしようとしています。 接続エラーを見るため、oci_errorにてエラーをキャッチしているのですが、 そのエラー内容が空っぽ(Falseで返ってくる)のため、何がおかしいのかわからない状況です。 構築環境は以下の通りです。 OS:WindowsXP(SP3) Webサーバ:IIS 使用DB:Oracle9i(クライアントは10g) 珍しい組み合わせのため、あまり情報がない状態です。 PHP、Webサーバの設定は色々なサイトを確認して設定できたつもりなのですが、 どこかしらに不備があるのでしょうか? Apacheであれば、エラーがログに残るようですが、IISにそういった機能はないでしょうか? 何かアドバイス等ありましたらお願いします。

    • 締切済み
    • PHP
  • PHP+MySQLをコマンドラインから使えない

    MySQLをつかったPHPをコマンドラインから実行したいのですが、 実行すると、mysql_connect()に対して見つからないというエラーが出ます。 Webから動かす分には問題なく動くのですが、どうすればコマンドラインからでも動かせるようになるでしょうか? よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpとoracleを用いたシステムでの文字化け

    phpとoracleを用いたシステムでwebサイトを構築しているのですが、 ブラウザからアクセスしページ表示した際に、全角文字が文字化けしてしまいます。 ◆環境 webサーバ:apache, php, oracleClient, PDO_OCI DBサーバ:oracle DBデータアクセス方法:PDO ◆事象の詳細 文字化けといっても必ず ???? とクエスチョン続きで表示されます。 上記webサーバのコマンドラインでphpのバッチを実行したところ、 コマンドライン上では正常に全角文字が表示されます。 まったく同じバッチをwebブラウザからhttpでアクセスを行ったところ、 文字化けしてしまいます。 ブラウザでの表示が悪いのではと思い、 phpのバッチ実行時に結果をテキスト出力させる処理を追加したのですが、 コマンドラインで実行した際は正常に出力され、ブラウザでアクセスした際は内容が文字化けして出力されました。 上記事象からアパッチが影響してるのではと考えられるので、 webサイトごと個別のhttpd.confの設定ファイルに NLS_LANG を設定したのですが、 結果は変わりませんでした。 文字コードの指定がない(正しくない)から文字化けするというよりは DBサーバから取得する文字列をどう受け取って(扱って)いいのかわからないという感じがします。 何か解決策等、わかる方がいましたらご教授いただけますでしょうか。

    • 締切済み
    • PHP
  • apacheからのodbc接続

    php5 からコマンドラインではodbc経由でsqlserverに接続は出来るのですが、 apache2.0をインストールして、webを通して接続すると、 Fatal error: Call to undefined function: odbc_connect() というエラーが出ます。 これは、PHP,apacheのどこか設定ができていないのでしょうか? ちなみに、webを通して(odbc関数を使わない)phpの動作は確認できています。

    • 締切済み
    • PHP
  • PHPとOracleの接続について

    oracle関数を使用したいのですが 『php.ini』の『extension=php_oci8.dll』を有効にして、ブラウザでPHPにアクセスしたら以下のような2つの警告が出ました。 1.プロシージャエントリポイントOCILobFreeTemporaryがダイナミックリンクライブラリOCI.dllから見つかりません。 2.Unknown():Unable to load dynamic library 'd:\php\extensions\php_oci8.dll'-指定されたプロシージャが見つかりません。 extension=php_oci8.dll』を無効にすればPHPは動きます。 環境は下記を使用しています。 NT:4.0 PHP:4.3.0 ORACLE:8.0.6 APACHE:1.3.27 ご存知の方はよろしくお願いいたします。

    • 締切済み
    • PHP
  • プログラムが実行されない?

    困っている内容を、簡単な例えで説明します。 PHPで「あるフォルダ内のwavファイルから、wmaとraファイルを変換作成する」 というプログラム(musicfile.php)を作り、バッチの実行ファイルを作成しました。勿論、変換に必要なexeは用意してあります。 バッチファイルの内容は『php musicfile.php』という単純なものになると思います。 さて、このバッチのショートカットを作成し、ブラウザ画面のボタンからそのショートカットを実行するように設定したのですが、思うように動作しません。 おかしいと思い、コマンドプロンプト画面から実行してみると、正常に動作します。 全く原因が解らないのですが、これはプログラムの記述が悪いのでしょうか? それとも、PHPの実行する環境(php.iniやApacheの設定)が悪いのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • コマンドライン実行とPHPのEXEC実行

    C言語プログラムの不具合に悩んでいます。 ◇以下抜粋ソース static int a=0; ・・・ int 関数A(){ /*別ファイルで使用*/ ・・・   a=256; ・・・ } int 関数B(){ int i; ・・・ for(i=0;i<a;i++){ if(for文を抜ける条件){break;} } if(i==a){ printf(エラー!);} ・・・ } ◇以上抜粋ソース 上記のソースより常にi=a=0になってしまうので常にエラーとなる気がするのですがいまいち確信が持てません。 というのも、このソースは他の人から頂いたもので、コマンドラインから実行すると何故か100パーセント正常動作するのです。 しかしブラウザを起動して、PHPファイルにアクセスし、PHPのEXEC関数から実行すると3回に1回ほどの割合で(エラー!)がでます。 3回に2回は正常動作します。 似たような不具合を御経験の方がおられれば何卒御教示ください。 よろしくお願いします。

専門家に質問してみよう