因此,当在网站上加载页面时,我运行一个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数据运行,它没有写权限,所以它抛出了一个我没有用我的代码捕捉到的错误。
可以通过授予www数据的权限来修复:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 770 /var/www/html
虽然这不是很安全,而且这种做法很糟糕,所以最好不要这样做。但是,如果必须这样做,那么不妨创建一些专门设计用于存储这些文件的目录。