• 締切済み

コマンドライン実行で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 よろしくお願いします。

  • fpac
  • お礼率0% (0/1)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

使ったことがないのですが、名前解決が出来ないように見受けられます。 localhostではなく、127.0.0.1にしてみてはどうでしょうか?

fpac
質問者

補足

IPアドレスを直接指定しても同じ結果です。 いろいろ調べてみて、以下の方法でとりあえずDBアクセスすることができました。  WINNT\system32\drivers\etc\services に下の1行を追加する  gds_db 3050/tcp しかし、なぜブラウザ経由がOKでコマンドラインからは駄目なのかわかりません。

関連するQ&A

  • phpファイルをコマンドラインで実行できない

    PHPファイル <?php $host = "ftp.aaa.jp"; $username = "test"; $password = "passwd"; // FTP 接続を開く $ftps = ftp_connect($host); $result = ftp_login($ftps, $username, $password); if (!$result) { echo "接続に失敗しました。\n"; return; }else{ echo "接続に成功しました。\n"; } // ダウンロードif (ftp_get($ftps, "test.csv","/home/test.csv", FTP_ASCII)) { echo "Successfully written to test.csv\n"; } else { echo "There was a problem\n"; } ?> をコマンドラインから実行すると、 「接続に成功しました。 Successfully written to test.csv」 は返ってくるのですが、実際にファイルのダウンロードが出来ていません。ただし、ブラウザから直接URLを入力して実行した場合は、ファイルのダウンロードが出来ます。 コマンドラインから実行出来ない原因を教えてください。

    • ベストアンサー
    • PHP
  • DB2のログインについて

    DB2初心者です。  AIX5.2+DB2 8.1環境を使用しております。DB2へのアクセスはこのUnixシステムからのみと想定してください(すなわち、DB2へのログインクライアントもサーバーも同じ AIX上で動いているという想定です)。 この環境のもと、DB2のインスタンスユーザであるdb2inst1からDB2上のsampleへログインしようと試みます。  > db2 connect to sample user db2inst1 using xxxxx(password) すると以下のメッセージが返されます。 SQL30082N Attempt to establish connection failed with security reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001  次に、以下のコマンドを実行します。 db2 connect to sample user db2inst1 using xxxxx new yyyyy confirm yyyyy SQL30083N Attempt to change password for user id "db2inst1" failed with security reason "" (""). SQLSTATE=08001  となり、エラーでログインできません。しかし、以下の  コマンドでアクセスすると、    > db2 connect to sample DB2へ正しくアクセス可能です。  db2 connect to sample user xxx using xxx形式で  アクセスするにはどうすればよいのでしょうか。  ちなみに、DB2の設定は、インストール直後の状態です。 dbm cfgのAuthenticationはサーバーにしております。これをClientにしても結果は同じでした。また、sampleには特にGrant connect/loadも実行しておりません。  以上よろしく御願い申し上げます。

  • PHP+ApacheでMySQLに接続できない。プロンプトからは可能

    以下のようなコードでmysqltest.phpというファイルを作成しました。 これを php -f mysqltest.php とやると成功します。 しかし、ブラウザでhttp://パス/mysqltext.phpとやると失敗します。 双方がどう違うのか教えていただけないでしょうか。 以下コードです。 ----------------------- <html> <body> <?php $hostname = "localhost:/var/lib/mysql/mysql.sock"; $name = "root"; $password = "pass"; printf( "hostname:%s<br>\n" , $hostname ); printf( "username:%s<br>\n" , $name ); printf( "password:%s<br>\n" , $password ); mysql_connect($hostname, $name, $password ) or die('cannot connect to database'); ?> </body> </html> ---------------------------------- 単に「ホスト:ポート」「ユーザネーム」「パスワード」を指定してconnectしているだけです。 コマンドラインから実行すると成功します ---------------------- <html> <body> hostname:localhost:/var/lib/mysql/mysql.sock<br> username:root<br> password:komaba<br> </body> </html> ---------------------------- ブラウザで実行すると失敗します。 ----------------------------- hostname:localhost:/var/lib/mysql/mysql.sock username:root password:pass cannot connect to database -----------------------------

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

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

    • ベストアンサー
    • PHP
  • DB接続文字列がわかりませんSQLSERVER

    PHPからsqlServer2005Expresseditionに接続ができません DB接続文字列が間違っていると思います。 sqlserverのドライバのバージョンは3.0で pdoとsqlserverのドライバが正しく適応されている事を phpinfoで確認済みです sqlserver management studioのデータベース インスタンス????は YOUR-W97XBD33NB\SQLEXPRESSと記述されていました。 データベース名はsampleです。 ホストはlocalhost1台のパソコンで処理しています。 ユーザはsaでパスワードはmanagerです pdoのプログラムにパスワード、ユーザ名が設定されていないのが気になります。 ソースはインターネットで検索したものを利用して記述しました 新米プログラマなので何をいっているかわからない所も多々あると思いますが どうかご回答願います。 表示結果Failed to get DB handle: ソース <?php try{ $serverName ="YOUR-W97XBD33NB\SQLEXPRESS"; $dbname = "sample"; $user = "sa"; $password ="manager"; $dbh = new PDO("sqlsrv:server = $serverName;Database = $dbname"); }catch(PDOException $e){ print("Failed to get DB handle:"); exit(); } $stmt = $dbh-prepare("select * from shohin"); $stmt->execute(); while($row = $stmt->fetch()){ print_r($row); } unset($dbh); unset($stmt);

    • 締切済み
    • PHP
  • PerlでMySQLのテーブル一覧取得

    PerlでMySQLのデータベース内のテーブル一覧を取得することはできますか? 自分で以下の様なサブルーチンを作りましたが、返り値に何も入っていませんでした。 コマンドラインでもshow tables;で確認したのでテーブルは確実に存在します。 接続も showでfetchrow_arrayなどは使えないのでしょうか? またselect文でテーブル一覧を取得する方法がありましょうか? Error: failed to connect to DB.とは出てこないので、接続も成功しています。 sub mysql_tablesGet{ my @data=@_; my $db_id = $data[0]; my $db_password = $data[1]; my $dbh = DBI->connect("dbi:mysql:dbname=".$ftp_id.";host=$mysql_host", $db_id,$db_password) or die "$!\n Error: failed to connect to DB.\n"; my $sth = $dbh->prepare("show tables;"); $sth->execute; my @response; my $i=0; while(my @var = $sth->fetchrow_array){ my ($table_name) = $var[0]; $response[$i] = $table_name; $i++; } $dbh->disconnect; return @response; } MySQLのログはこんなのが出ています。 130406 17:11:44 70 Connect test2@192.168.11.22 on test2 70 Query set autocommit=1 特にエラーは出ていないので、show tables;は成功していると思います。

    • ベストアンサー
    • Perl
  • PHPからMySQLに接続することができません。

    PHPからMySQLに接続することができません。 解決方法をご存じの方は教えていただけないでしょうか。 PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) 環境 OS:CentOS 5.3 DB:Mysql 5.0.67(ソースからインストール) Web:Apache PHPのソースの一部を以下に記します。   $db_host = 'localhost';//DB_NAME;   $db_user = 'user';//DB_USER;   $db_pass = 'pass';//DB_PASS;   $db = mysql_connect($db_host,$db_user,$db_pass); 以下の方法も試したのですが、エラーメッセージは変わりませんでした。   $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd") 端末のコマンドからMySQLへの接続は成功します。 ホスト名、ユーザー名、パスワードも上記と同一のものです。   $ /usr/local/mysql/bin/mysql -h localhost -u user -p   Enter password:pass 以上です。宜しくお願いします。

    • 締切済み
    • PHP
  • PHPでDBから比較結果を取得する関数が作りたい

    タイトルの通りで、まず、データベース(MySQL)の例を以下。 ユーザー    単語  田中    初志貫徹  鈴木    一石二鳥  品川    四面楚歌 /***以下省略****/ のような感じでデータが入っています。 (なお、ユーザーは一意な値となっています。単語は重複します。およそ2万件登録されています。) ユーザーの名前を入力するとDB内を参照し、その組となる単語を出力する関数を考えています。 一応、以下のように作ってみたのですが、5つのテストデータを呼び出すだけで、3sもかかってしまいました。(PHP ver 5.4.1.6 eAccelerator適応済み環境にて確認) 比較処理の速度が遅く、使い物になりません。 もっと実行速度が速くなるような書き方を教えていただけないでしょうか? よろしくお願いいたします。m(_ _)m /************以下、関数のソースコード*********/ function conp_db($name){ //DBアクセス用変数 $cflag=true; $host = HOST; $user = USER; $password = PASSWORD; $database = DB; $table = TABLE; $data=''; $res = mysqli_connect($host, $user, $password,$database); if(!$res) { printf("MYSQLの接続に失敗しました。: %s\n",mysqli_connect_error()); exit(); } mysqli_set_charset($res,'utf8'); if($stmt = mysqli_prepare($res, "SELECT user,word from {$table}")) { mysqli_stmt_execute($stmt); //取得変数固定 mysqli_stmt_bind_result($stmt,$row['user'],$row['word']); while (mysqli_stmt_fetch($stmt) and $cflag) { if($name === $row['user'] and $cflag){ $data = $row[word']; $cflag = false; }else{ $data = 'nobody'; } } mysqli_stmt_close($stmt); } mysqli_close($res); return $data; }

    • ベストアンサー
    • PHP
  • データベース接続 ログインフォーム

    PHPにてログインフォームを作成しています。 PHPは初心者のため、ご教授いただけたらと思います。 下記の記述方法はPHP逆引きレシピという参考書を元に作成しています。 <?php //DB設定 $DB_HOST = 'localhost'; $DB_USER = 'root'; $DB_PASS = '0000; $DB_NAME = 'members'; if (count($_POST) == 0) { echo <<< EOL <form method="post" action="./main.php"> ユーザーID: <input name="id" /> PASSWORD: <input name="password" type="password" /> <input type="submit" value="ログイン" /> </form> EOL; } else { $link = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if (mysqli_connect_errno()) { die('データベースエラー'); } // クエリを準備 $sql = 'SELECT * FROM members WHERE id=? AND password=?'; $msg = '認証NG'; if ($stmt = mysqli_prepare($link, $sql)) { mysqli_stmt_bind_param($stmt, 'ss', $_POST['id'], $_POST['password']); mysqli_stmt_execute($stmt); mysqli_stmt_store_result($stmt); $count = mysqli_stmt_num_rows($stmt); mysqli_stmt_close($stmt); if ($count == 1) { $msg = '認証OK' ; } } echo $msg; } ?> という記述ですが、IDとPASSWORDがあっていれば「認証OK」と表示されます。 文字の表示ではなく次のページ(main.php)が表示されません。 どこを編集、記述したらmain.phpが表示されるのでしょうか? また、間違っていたら「認証NG」と表示されるのですが、 この文言のみの表示でフォームが表示されません。 間違っていたらフォームの上に表示させたいのですが、どのように編集、記述したらよろしいでしょうか? 例↓ *ここに間違っていたら認証NGと表示させる <form method="post" action="./main.php"> ユーザーID: <input name="id" /> PASSWORD: <input name="password" type="password" /> <input type="submit" value="ログイン" /> </form> 質問ばかりで申し訳ありません。 本やネットなどで色々としらべたのですが、自分の求めているサイトや記述方法が見つかりませんでした。 大変申し訳ないのですが、参考記述または参考サイトなどがありましたらご教授ください。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • postgres に接続できない

    PHP4とpostgrs8.0を利用しています。OSはWINDOWS2000です。 $DB_SERVER="localhost"; $Port = "5432"; $DB_NAME="test"; $DB_UID="postgres"; $DB_PASS="abc"; define("DB_CONECT","host=$DB_SERVER port=$Port dbname=$DB_NAME user=$DB_UID password=\"$DB_PASS\""); という設定で pg_connect(DB_CONECT) の接続でエラーが発生します。 Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "postgres" in c:\*****.php on line 12 なぜでしょうか? pg_hba.confの設定で host all all 127.0.0.1/32 md5 を host all all 127.0.0.1/32 trust に変更すると接続できるのですが。 それは問題ないのでしょうか? またレンタルサーバーのpostgresを利用する場合、 その設定も個人で変更できるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう