Permissão negada ao criar novo arquivo

1

Eu poderia criar um arquivo com php fopen (..) quando eu usei o Ubuntu 12.04. Mas agora não consigo criar arquivo com php, pois passo o ubuntu 14.04. Eu posso abrir o arquivo existente para ler ou escrever. Mas não consigo criar novo arquivo por causa da permissão negada.

fopen(../../../../../Desktop/file): failed to open stream: Permission denied in /var/www/html/createFolder.php on line 17
Cannot open file: ../../../../..//Desktop/file" error is occured.


$my_file = ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "home" . DIRECTORY_SEPARATOR . "username" . DIRECTORY_SEPARATOR . "Desktop" . DIRECTORY_SEPARATOR . "file";
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);
    
por Mert Özoğul 20.06.2014 / 15:30

2 respostas

0

O erro ocorre devido a um problema de permissões.

Você deseja criar um arquivo no diretório Desktop do seu usuário.

Seu script não está sendo executado pelo seu usuário , ele está sendo executado pelo usuário do apahce, que é usualmente www-data . Este usuário provavelmente não tem permissão para criar arquivos no diretório inicial de seus usuários.

Portanto, você precisa permitir que o usuário do Apache escreva o acesso ao seu diretor Desktop.

Nota: Esta é uma má ideia mas pode fazê-lo de várias formas.

1.Adicione o usuário do apache ao seu grupo de usuários.

2.Altere a permissão do seu diretório de área de trabalho para permitir que qualquer um escreva nela (provavelmente a pior idéia).

3.Adicione-se ao grupo www-data e altere o proprietário do grupo de sua pasta da área de trabalho para www-data .

Tenha cuidado com qualquer uma dessas técnicas, pois elas abrem seu diretório pessoal para outras pessoas.

Não relacionado: por que usar tantos .. ? Apenas use e caminho absoluto.

    
por dan08 20.06.2014 / 19:03
0

Você precisa de permissão para criar o arquivo em ../../../../../Desktop .

Porque o código php é executado com privilégios de usuário do apache.

Se você quiser, você deve verificar e mudar com os seguintes comandos.

ls -l ../../../../../Desktop

sudo chmod 777 ../../../../../Desktop

ou

sudo chown xxx ../../../../../Desktop

o xxx é o nome de usuário do apache.

    
por xiaodongjie 20.06.2014 / 16:17