3

这是上下文:我必须为一个允许用户将 csv 文件导入 MySQL 数据库的 Intranet 站点编写源代码。

这个导入非常庞大,这就是我编写 C# 程序的原因。

这个程序创建了一些线程来读取我的 csv 文件的一些行。

这些线程控制、更改类型并使用 SQL 将我的数据插入 MySQL 数据库,如下所示:

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

此请求存在 9 个表。

每个人都可以使用这个程序,因为源代码是动态的:插入数据的示例 我编写了一个字典,其中包含我的 9 个表,其中包含所有字段、类型和导入文件的 CSV 标题(其中包含一些重音和符号,我ve 更改它,因为我无法将它们放入数据库中的字段名中)。

只能使用名为 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# 程序运行良好

但是当我用带有exec("programpath.exe parameter1 parameter2",return,otherreturn)函数的php调用它时,这个程序就不能工作了。

事实上,当我尝试使用我的 c# 程序访问 config.xml、MAP.csv、otherfile.txt/csv/.. 等 externfile 时。执行停止并出现一个 Windows 错误,显示“program.exe 停止其工作”(program.exe à cessé de fonctionner法语)。

因此,我尝试简单地编写我的问题:当我尝试使用 php 调用的 c# 程序访问文件时,出现了一个窗口问题,该问题停止了特征。

编辑:我找到了解决方案,我只需要做一个 cd c:/path_program/ 事实上,当我启动我的网站时,当前文件夹不是 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 回答