fopen Permission denied,Ubuntu,CodeIgniter

时间:2014-05-20 09:34:29

标签: php codeigniter ubuntu

我正在为我的项目尝试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。但是,它仍然没有奏效。 希望有人帮我解决这个问题。谢谢......

3 个答案:

答案 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)

  1. 打开终端
  2. 转到具有testFile.txt
  3. 的目录
  4. 类型:sudo chmod 755 testFile.txt(或使用777进行写作)

  5. 使用终端创建文件:

    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);

}