Jump to content

Fopen/fwrite não cria/escreve o ficheiro.


Dr_Lion
 Share

Recommended Posts

Máquinas virtuais ubnutu server 14.04;

Instaladas com lamp etc etc...

QUestão prática, tenho uma máquina a correr um script python, esse python chama uma página php na consola das máquinas remotas (máquinas virtuais ubuntu server). A forma como o python chama a página php é usando o subprocess.Popen com o stdout e stderr=devnull, pois não o quero pendurado... O comando invocado é

"ssh maquina php /var/www/pagina.php argumentos.."

a minha questão não é com este processo pois isto já está testado e funciona, é apenas para contextualizar.

Até aqui tudo certo!

Em relação ao meu problema:

na página php tenho entre outro código, algo como

<?php
(...)
$fitlog = fopen("/home/userx/fichlo2", "a");
fwrite($fitlog, "yada yada yada \n");
fclose($fitlog);
(...)
?>

o código para abrir e escrever o ficheiro não funciona, a página faz tudo o que é suposto menos isto (escrever o ficheiro)!

O ficheiro não existe aquando da execução do php, e no final continua a não existir!!!!

Já agora como posso fazer um log dos erros que isto me estará a gerar? Visto que não vou leio o stderr, existe alguma forma de obter o erro? nunca fui muito á bola com o sistema de log do php. Será que um try catch aqui me resolve o problema ou não serve, visto eu não conseguir ver a página por ser executada automaticamente?

Desde já agradeço a ajuda.

Edited by apocsantos
geshi
Link to comment
Share on other sites

Para o Log, cria um htaccess com este conteudo:

<Files ~ "^.*\.([Hh][Tt][Aa])">
  order allow,deny
  deny from all
  satisfy all
</Files>
<Files ~ "^.*\.(LOG|log|bak|bk|LCK)">
  Order allow,deny
  Deny from all
  Satisfy All
</Files>
# enable PHP error logging
php_flag  log_errors on
php_value error_log  PHP_errors.log
# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

Irá criar um PHP_errors.log na pasta do ficheiro que originar o erro.

Troca $fitlog = fopen("/home/userx/fichlo2", "a"); por $fitlog = fopen("/home/userx/fichlo2", "w");

Verifica as permissões da pasta.

Link to comment
Share on other sites

Boas, já descobri a minha falha... um gajo olha tantas vezes para o código que já nem lê e imagina coisas...

Já está tudo a trabalhar bem, a questão era muito simples, não estava a chamar as máquinas virtuais no python, mas uma máquina de testes que estava estática no início, já está resolvido. De qualquer forma vou experimentar isso para logar erros que possam surgir no php.

Desde já agradeço a pronta resposta.

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.