Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá fórum...
Estou pedindo ajuda aos universitários!
No terminal, com "php -a", ele funciona bem... Estou usando o Manual do PHP:
https://www.php.net/manual/pt_BR/function.fwrite.php
Uso o primeiro exemplo das notas... Parece problema de permissões, mas tô boiando quanto onde mexer nas permissões. No Apache2?! Nunca precisei mexer nos arquivos de configuração do Apache, sempre foi só gerar links simbólicos pelo terminal em /var/www/html, com os alvos dos links numa pasta "oficina" na minha pasta pessoal, e recarregar o navegador.
Mas agora, criei um index.php geral com links para cada projeto, criei um arquivo que funciona como um "index.php individual do projeto" mas com outro nome com o HTML, e outro com as funções PHP e, nele, uma função com as fopen() e fwrite() do primeiro exemplo das notas do Manual do PHP, sem parâmetros e echos sinalizando a execução.
Chamei a função no index individual que dava include para o arquivo da função. Recarrego a página com F5 e os echos funcionam bem, mas os arquivos que deveriam ser criados não. Quando volto no arquivo das funções, o fopen() e o fwrite() estão rindo de mim!
Já tentei com eles pelados, sem função, com path relativo no caminho do arquivo, aspas duplas, até um comentário antes fazendo //cuti cuti... Mas acabo de notar que estou fazendo os alvos dos links em /var, tentarem criar arquivos em /var, sem permissões de root...
Vou manter o tópico em aberto por via das dúvidas, e se resolver marco como "resolvido" reportando aos demais usuários, para contribuir...
Grato
Lucas Ribeiro
A questão das permissões é nos arquivos no servidor que você deseja editar, pode definir permissão de leitura(4), gravação(2) e execução(1), normalmente clicando botão direito vai ter uma opção para alterar permissões ou em propriedades. Se for criar um arquivo do zero através do php também tem que configurar as permissões na hora da montagem.
valww
Você deve dar permissão ao usuário apache de leitura e escrita na pasta do seu projeto.
Quando você executa vai terminal, o usuário que está executando é o seu. Via browser, é o servidor, que é apache.
Peguei de novo só agora...
Quero reiterar que os arquivos do projeto estão na minha pasta pessoal. Eles tem links em /var/www/html... Tentei apenas permissionar os arquivos do projeto, não deu. Agora vou definir o proprietário... Depois vou ver o lado das permissões no usuário apache, conforme observação de Gabriel Heming.
Grato, minha gente
Minha gente...
Não encontro um usuário apache! Seria o mesmo do navegador? Se for, acho que é o meu mesmo...
Quanto ao código, marcosmarcolin, é o básico...
<?php $fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp); ?>
Eu abri o arquivo e estava testando as funções para me certificar de que estava tudo certo... E não estava. Estou seriamente inclinado a usar cópias ao invés de links, mas vou fazer mais umas tentativas e postarei progressos. GratoFórum,
fiquei até meio sem graça... Devia ter executado meus arquivos pelo shell, saberia o problema na mesma hora. Fui modificando com o tempo, e coloquei até echos indicando "antes" e "depois" da execução do script...
function arquivo() {
echo "antes ";
$fp = fopen( 'dados', 'a' );
fwrite( $fp, 'om mani ' );
fwrite( $fp, 'padme hum' );
fclose( $fp );
echo " depois"; }
Então, executei o php pelo shell onde estavam os arquivos e o do erro
php /var/www/html/cap/cap.php
"cap.php" contém a chamada para a função arquivo() do script cap_n.php
antes
PHP Warning: fopen(dados): failed to open stream:
No such file or directory in /home/lucasribeiro/Sistemas/oficina/software/LR/cap/cap_n.php on line 49
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in
/home/lucasribeiro/Sistemas/oficina/software/LR/cap/cap_n.php on line 50
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in
/home/lucasribeiro/Sistemas/oficina/software/LR/cap/cap_n.php on line 51
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in
/home/lucasribeiro/Sistemas/oficina/software/LR/cap/cap_n.php on line 52
depois
Separei as linhas dos avisos para ficar mais claro...
Alguém pode me ajudar? Estou estudando a seguinte questão postada no stackoverflow onde é dito para o usuário definir variáveis como root_path:
https://pt.stackoverflow.com/questions/180845/erro-failed-to-open-stream-no-such-file-or-directory
Grato
O primeiro warning é o que gera os demais problemas.
Basicamente o script não localiza o arquivo. Valide o path que está sendo utilizado. Lembrando que Linux é case sensitive.
Ok. Eu nem especifiquei path no script, ele usou o path implícito no php...
Poste seu código.