我可以运行一个PHP脚本,运行一个C脚本,然后创建一个文件吗


Can I run a PHP script that runs a C script which then creates a file?

因此,当在网站上加载页面时,我运行一个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 -asystem('./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

虽然这不是很安全,而且这种做法很糟糕,所以最好不要这样做。但是,如果必须这样做,那么不妨创建一些专门设计用于存储这些文件的目录。