2017-09-21 2 views
2

私は共有ホスティングを使用しており、初めてFirebirdファイルからデータを読み込もうとしています。アップロード時のエラーFirebirdデータベースファイル

HTML

<label class="title">Import by FBD File</label> 
<input type="file" class="input-file input-importFDB" name="filefdb" id="filefdb" > 
<input class='btn btn-primary' type='submit' id='btnImportFDB' name='btnImportFDB' value='Import'> 

PHPファイル

if (isset($_POST['btnImportFDB'])){ 
    $host = $_FILES["filefdb"]["tmp_name"]; 
    $username = 'SYSDBA'; 
    $password = 'masterkey'; 

    $dbh = ibase_connect($host, $username, $password); 
    $stmt = 'SELECT * FROM customer;'; 
    $sth = ibase_query($dbh, $stmt); 
    while ($row = ibase_fetch_object($sth)) { 
     echo $row->CUST_NO.'<br/>'; 
    } 
    ibase_free_result($sth); 
    ibase_close($dbh); 
} 

私は取得していますエラーは次のとおりです:

[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning: ibase_connect(): Unable to complete network request to host &quot;localhost&quot;. Failed to establish a connection. in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 56 
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning: ibase_query(): invalid database handle (no active connection) in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 58 
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning: ibase_fetch_object() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 59 
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning: ibase_free_result() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 62 
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning: ibase_close() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 63 

私は、ユーザーが以下を経由して自分の.fdbファイルを選択することを可能にするインターフェースを持っています達成したいことの更新:

  1. ローカルマシンにある.fdbパスをユーザーが指定できるようにするには、パスが自分のWebサイトでキャプチャされます。
  2. ユーザーは、.fdbファイルから自分のウェブサイトにデータを転送(アップロード)するためのボタンをクリックするだけです。
  3. ここでは、上記のようなエラーが発生しています。私と同じ目的を達成するための他の方法は何であるか尋ねてください。テキスト/ XML/Excel(CSV)形式でいわゆるデータダンプ/データインポート/データアップロードをユーザーに要求するだけでよいですか?

答えて

2

クライアントからサーバーにデータベースファイルをアップロードして接続していますか?それは少なくとも奇妙なことです。通常は、サーバー上でデータベースをホストし、それに接続します(クライアントが使用するデータベースを指定できるようにした後に)。

この場合、ホストにFirebirdサーバーがインストールされていないか、またはデフォルトのポート3050とは異なるポートで実行されているため、このエラーが発生するようです(ホスト 'localhost'がエラーになります)。私の経験では、Firebirdとの共有ホスティングはまれであるため、実際にFirebirdを提供しているかどうか、もしそうなら、使用するポートをホスティング会社に問い合わせることをお勧めします。

また、これは次の理由で正常に動作しない(かもしれない)になります。

  • クライアントがWindowsを使用していると、サーバがLinuxを使用している場合は、Firebirdのサーバーがデータベースを開くことはできません、
  • 正しく設定されているサーバー上のFirebirdサーバプロセスがウェブサーバプロセスからファイルにアクセスできないようにする必要があり
+0

こんにちは、あなたの貴重な時間とフィードバックに感謝します。私は私の質問を更新しました、もう一度私に助言する気にしないでください。 –

+0

@ 4LeaveCover私の答えは変わりません。あなたはFirebirdサーバーを稼動していない(または別のポート上に)ように見えますが、それを解決してもおそらく異なる問題に遭遇するでしょう。実際の唯一の方法は、データベースをバックアップしてサーバー上に復元するか、実際にエクセルシート、CSVなどを使用してデータをアップロードすることです。 –

+0

私が望むのはユーザーのデータですが、ユーザーはMySQL、MSSQL、Firebird、MS Accessなどを使用している可能性があります。そのため、DBファイルをアップロードするように依頼するのではなく、私のシステムにアップロード/ダンプする? –

0
Error: Unable to complete network request to host &quot;localhost&quot; 

ご注意引用符でI nホスト名

+1

'$ host'変数がどのように設定されているかを考えれば、ファイルへのパスしか含まれていないので、エラーメッセージをエスケープしているPHPだと思います。 –

関連する問題