php调用的c#程序中的文件访问

时间:2012-11-19 08:44:47

标签: c# php file permissions

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

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

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

这些线程控制,更改类型并使用sql将我的数据插入到MySql数据库中:

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

此请求适用于9个表。

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

此字典只能使用名为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#程序访问externfile,如config.xml,MAP.csv,otherfile.txt / csv / ..执行停止并且有一个Windows错误,上面写着“program.exe停止工作”(法语为program.exe à cessé de fonctionner)。

所以我尝试简单地编写我的问题:当我尝试使用php调用的c#程序访问文件时,有一个窗口问题会阻止这个问题。

编辑: 我找到了解决方案,我只需要做一个cd c:/ path_program / 事实上,当我启动我的网站时,当前文件夹不是c:/但是symfony中的文件夹启动... 只是一个初学者错误。 谢谢大家的帮助! CIA

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

检查解决方案的编辑帖子