因此,当在网站上加载页面时,我会运行一个创建一些文件的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脚本确实运行,所以我在浏览器上得到了一些响应,它只是创建文件部分不起作用。
这可能是我不知道的某种许可吗?或与路径有关的问题?
答案 0 :(得分:1)
所以是的,这是一个权限问题,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
虽然这不是很安全,但是不好的做法,所以理想情况下不要这样做。 但是,如果必须,那么也可以创建一些专门用于在层次结构中高级存储这些文件的目录。