Jump to content

fwrite (w) warning


xploit
 Share

Recommended Posts

Boas, eu localmente tenho este script a funcionar correctamente, pus no meu servidor remoto, que usa UNIX, não funciona dá este erro:

Warning: fopen(../a/stopgame.now) [function.fopen]: failed to open stream: Permission denied in /home/yu/public_html/classes/class.WriteFile.php on line 14

Warning: fwrite(): supplied argument is not a valid stream resource in /home/yu/public_html/classes/class.WriteFile.php on line 15

Warning: fclose(): supplied argument is not a valid stream resource in /home/yu/public_html/classes/class.WriteFile.php on line 16

Agora não percebo é porquê...

Excerto de código da classe:

function  writer($FILENAME,$TEXT){
  $fp = fopen($this->Direction.$FILENAME, "w");
      $escreve = fwrite($fp, $TEXT);
      fclose($fp);						
}

tá em modo "W".. o que puderá ser?

Link to comment
Share on other sites

É mesmo nas pastas/ficheiros. Se tiveres acesso SSH onde tens os ficheiros, basta aceder e fazer um chmod 755 (tu tens todas as permissões, o grupo e outros têm permissões de execução e leitura), ou outro valor que aches mais conveniente. Em alternativa, o teu cliente de FTP/painel do alojamento deve-te oferecer essas opções.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

O PHP é explícito na mensagem: permission denied. Se o ficheiro fosse remoto, ainda se podia considerar o facto de teres a função de obter ficheiros remotos inactiva, mas como se tratam de ficheiros locais, é quase de certeza problema de permissões.

Se o teu host é um VPS, então provavelmente tens acesso à consola. Na consola, vais à pasta dos ficheiros web e espreita as permissões, listando os ficheiros:

ls -l

Como não sei ao certo como aparece a listagem, visto que não sou utilizador assíduo de Linux, deixo-te aqui uns links da wiki para te ajudar a determinar as permissões necessárias:

http://wiki.portugal-a-programar.pt/sistemas_operativos:linux:tutorial_chmod

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Sim, o Filezilla tem essa opção, embora não a tenha usado, deveria funcionar. Se pesquisares no Google, verificas que se trata quase sempre, senão sempre, de permissões. Tenta verificar com SSH se o Filezilla está efectivamente a escrever as permissões.

Mas espera lá, estás a abrir o ficheiro para escrita? Experimenta usar o modo 766, que te permite que outros (provavelmente onde está o PHP) tenham permissões de escrita e leitura. Em último caso, tenta 777.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

fui verificar no próprio ftp do cpanel, e ele diz que todos os ficheiros o root inteiro está a 755, portanto não estou a perceber o que se está a passar, os caminhos estão fora de questão porque estão certissimos, eu na minha antiga vps o sistema funcionava perfeitamente, mudei para esta nova e aconteceu me isto, leva me a entender que é uma outra configuração para além das permissões as pastas e ficheiros, será que pode ser alguma configuração no apache ou assim?

realmente não percebo...

Obrigado pelas vossas indispensáveis ajudas  😄

Link to comment
Share on other sites

Não sei se reparaste na minha última resposta, mas eu indiquei-te para colocar as permissões a 766 (escrita e leitura), em vez dos 755 (leitura e execução, sem escrita (w)). Pode ser disso, visto que estás a escrever em ficheiros e com 755 não tens permissões de escrita (grupo e outros, ode estará o PHP possivelmente).

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Sim, porque estás a dar permissões totais (escrita, leitura e execução) para toda a gente, mas não sei se fará diferença num ambiente web. Eu não costumo mexer muito em Linux como disse, por isso será melhor aguardar a resposta de alguém que te saiba recomendar melhor as permissões que deves aplicar nesse caso.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Geralmente tem a ver com o utilizador em que o PHP corre, depende um pouco da distribuição usada/configuração, mas a partida em modo DSO/module o php é executado pelo Apache (e respectivo utilizador), já em CGI costuma ser o "nobody" (ou será o inverso??). Sem poder alterar o dono e/ou grupo das pastas, a única opção é mesmo usar permissões 777 na pasta.

"Pensa positivo: tudo pode piorar"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.