我正在为我的项目尝试fopen
。哪个在带有CodeIgniter PHP框架的Ubuntu上运行。结果是这样的:
A PHP Error was encountered
Severity: Warning
Message: fopen(testFile.txt): failed to open stream: Permission denied
Filename: controllers/home.php
Line Number: 10
can't open file
顺便说一下,这是我在Controller上的代码:
public function create_file(){
$ourFileName = 'testFile.txt';
$ourFileHandle = fopen($ourFileName, 'r') or die ("can't open file");
fclose($ourFileHandle);
}
我查看了那段代码,我认为应该有一条打开文件的路径,对吧?如果是的话,我应该把路径放在哪里?因为,我遵循了本教程中的代码:http://www.tizag.com/phpT/filecreate.php。
让我感到困惑的一件事是,没有文件testFile.txt
我想创建它,但是如何授予创建它的权限。因为终端会说No such file or directory for the file
。我该怎么办?
我还尝试在chmod
目录上运行www
。但是,它仍然没有奏效。
希望有人帮我解决这个问题。谢谢......
答案 0 :(得分:8)
有两种方式:
1。)通过此命令“sudo chmod -R 777 / var / www”chmod www目录到777。 这将以递归方式为所有子文件夹和文件提供权限。
2。)如果您在第一步之后将来创建任何新文件夹(或www目录中的项目),请按照上述步骤操作:
=> Right click on your current project folder
=> Scroll to Properties
=> Scroll to permissions
=> Add permission for "Create and Delete files" for owner, group, others.
=> Now click on "Change permission for enclosed files"
=> Give appropriate permissions for files and folders there.
全部完成。现在fopen()不应该发出警告。
答案 1 :(得分:0)
使用终端创建文件:
sudo touch testFile.txt
使用php创建文件(如果不存在):
fopen('testFile.txt', 'w');
注意:如果您不是您无法写入的文件夹的所有者。
确保父文件夹/目录至少有755 chmod。
答案 2 :(得分:0)
我认为您需要更改要尝试打开的文件的权限。此外,您没有提到是否要读取或写入文件。通常,您可以按如下方式为文件授予权限:
chmod 777 testFile.txt
或者,如果您希望完整的www目录及其内容以递归方式拥有所有权限,请尝试以下操作:
sudo chmod -R 777 www/
执行上述操作后,您应该可以打开文件,如下面的代码所示:
$handle = fopen("testFile.txt", "r"); // for reading
或
$handle = fopen("testFile.txt", "w"); // for writing
更改您的功能如下:
public function create_file(){
$ourFileName = 'testFile.txt';
$ourFileHandle = fopen($ourFileName, "w") or die ("can't open file");
fclose($ourFileHandle);
}