3

これはコンテキストです。ユーザーがcsvファイルをMySQLデータベースにインポートできるようにするイントラネットサイトのソースを作成する必要があります。

このインポートは非​​常に大規模であるため、C# プログラムを作成しました。

このプログラムは、csv ファイルのいくつかの行を読み取るスレッドを作成します。

これらのスレッド制御、タイプの変更、および次のような SQL を使用してデータを MySQL データベースに挿入します。

insert into table1 (fields) values (dataline 1 ), (data line 25),...,(data line n);

このリクエストは 9 つのテーブルに対して存在します。

ソースコードが動的であるため、このプログラムは誰でも使用できます: データを挿入する例 すべてのフィールド、タイプ、およびインポートファイルの CSV ヘッダーを含む 9 つのテーブルを含む辞書を作成します (アクセントと記号が含まれています。データベースのフィールド名に入れることができないため、変更する必要があります)。

この辞書は、MAP.csv というファイルでのみ作成できます。

例:

table   /   field     /    type  /   header

table 1  /  field1_table1 /string  / hêàder

table 1   / field2_table1/ int    /  header1

table 2   / field1_table2/ date   /  hêàder2

table 1  /  field3_table1/ string  / hêàder3

program.exe を実行すると、私の C# プログラムは非常にうまく機能します。

しかし、関数を使用してphpで呼び出すと、exec("programpath.exe parameter1 parameter2",return,otherreturn)このプログラムは機能しません。

実際、私の c# プログラムで config.xml 、 MAP.csv、otherfile.txt/csv/.. のような externfile にアクセスしようとすると。実行が停止し、"program.exe stop its work" (program.exe à cessé de fonctionnerフランス語) という Windows エラーが表示されます。

だから私は自分の問題を簡単に書こうとします.phpによって呼び出されたc#プログラムでファイルにアクセスしようとすると、特性を停止するウィンドウの問題があります.

編集:解決策が見つかりました。cd c:/path_program/ を実行するだけです。実際、Web サイトを起動すると、現在のフォルダーは c:/ ではなく、Symfony が起動するフォルダーです...初心者のエラーでした。

4

2 に答える 2

0

許可の問題である可能性があります。

Web サーバーは、特定のセキュリティ コンテキスト (ユーザー) の下で実行されています。使用する Web サーバー (IIS、Apache など) とその構成によって異なります。

PHP からアプリケーションを実行すると、アプリケーションは WebServer と同じ「ユーザー」の下で実行されます。

あなたは、外部ファイルにアクセスするとすぐにアプリケーションがクラッシュするように見えると言いました->ウェブサイトを実行するユーザーはexeを実行するためのアクセス権を持っていますが、構成ファイルにはアクセスできません。

相対パスを使用してファイルにアクセスします。アプリケーション パスに対する相対パスを絶対パスにマップするには、次のスニペットを使用できます。

string appPath = System.Windows.Application.ResourceAssembly.Location;
string relativeResourcePath = "RESSOURCES/file.csv";
string absolutePath = System.IO.Path.Combine(appPath, relativeResourcePath);
于 2012-11-19T09:15:34.687 に答える
0

解決策については編集投稿を確認してください

于 2012-11-19T14:28:32.273 に答える