【发布时间】:2023-03-10 05:12:01
【问题描述】:
因此,当在网站上加载页面时,我会运行一个创建一些文件的 C 脚本。
一切都可以自己完美运行,但放在一起我遇到了分段错误。
system('./cScript /var/www/html/someFile.txt', $returnValue);
C 脚本采用该参数并基于它创建另一个文件:
FILE *f;
f = fopen ('/var/www/html/someFile.bak', "w");
fprintf (f, "%s", "some content goes here");
fclose (f);
如果我自己运行 C 脚本就可以了
如果我运行 PHP -a 和 system('./cScript /var/www/html/someFile.txt', $returnValue); 就可以了
但是如果我通过浏览器运行它就不起作用。虽然 C 脚本确实运行了,所以我在浏览器上得到了一些响应,它只是创建文件的部分不起作用。
可能是某种我不知道的许可吗?还是路径相关的问题?
【问题讨论】:
-
运行 Web 服务器的用户是否对该目录具有读/写权限?尝试以该用户身份登录,然后运行您的脚本!
-
嗯 php 当前以 root 身份运行
-
可能是权限错误。您应该始终检查涉及外部资源的调用的返回值,例如打开一个文件。永远不要假设成功。您的 C 代码假定任何事情都不会出错,这是非常糟糕的编码习惯。不,php不会以root身份运行,除非您以root身份运行您的网络服务器(非常非常非常糟糕的做法)。您的网络服务器以 root 身份启动,但应该删除 root 权限并以不同的用户身份运行,例如www-数据。
-
'c 程序'我的主@iharob