因此,当在网站上加载页面时,我运行一个 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 脚本确实运行了,所以我在浏览器上得到了一些响应,这只是创建文件部分不起作用。
这可能是某种我不知道的许可吗?或者路径相关的问题?
最佳答案
所以,是的,这是一个权限问题,PHP 作为 www-data 运行,并且没有写入权限,因此它抛出了一个错误,我没有用我的 let-keep-it-extremelly-simple- 捕获该错误从代码开始。
可以通过授予 www-data 权限来修复:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 770 /var/www/html
但这不是很安全,而且是不好的做法,所以最好不要这样做。 但如果您必须这样做,不妨创建一些专门设计用于在层次结构中较高位置存储这些文件的目录。
关于php - 我可以运行一个 PHP 脚本来运行一个 C 脚本,然后创建一个文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370694/