Autor Tópico: PHP nao acessa includes  (Lida 10612 vezes)

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
PHP nao acessa includes
« Online: 14 de Agosto de 2013, 15:10 »
Boa tarde a todos. Meu primeiro post na comul pois pesquisei mas não consegui resolver... Achei algumas dicas sobre PATH mas não funcionaram (ou não fiz corretamente). Usava debian e recentemente instalei um ubuntu server para ser servidor web e futuramente configurar um WordPress nele também.

O problema e que, quando tento carregar minha index.php ela retorna o seguinte erro:

Warning: include_once(includes/funcoes.php): failed to open stream: Permission denied in /var/www/intranet/index.php on line 3 Warning: include_once(): Failed opening 'includes/funcoes.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/intranet/index.php on line 3 Fatal error: Class 'funcoes' not found in /var/www/intranet/index.php on line 5

A principio pensei ser permissão, e mesmo não entendendo muito fiz um #chmod 7777 includes

O código que retorna o erro e o:

<?php
error_reporting(E_ALL); ini_set('display_errors','On');
include_once('includes/funcoes.php');
global $funcao;
$funcao = new funcoes();
?>


atraves do get_include_path() obtive:
.:/usr/share/php:/usr/share/pear

E ja conferir, a página se encontra dentro da includes sim...

Alguém poderia me dar uma luz?

Agradecido...

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: PHP nao acessa includes
« Resposta #1 Online: 14 de Agosto de 2013, 17:07 »
Qual a sua versão do PHP? Aqui estou usando a 5.2 e faço meus includes de forma diferente, como por exemplo:

Código: [Selecionar]
include '../common.php';

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #2 Online: 14 de Agosto de 2013, 17:12 »
Felix, meu php é:

PHP Version 5.3.10-1ubuntu3.7

E tentei da forma que você faz e o resultado foi o mesmo...

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: PHP nao acessa includes
« Resposta #3 Online: 14 de Agosto de 2013, 17:17 »
Mas o erro foi o mesmo ao fazer o include da forma como eu faço? ou foi diferente?

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #4 Online: 14 de Agosto de 2013, 17:52 »
Foi o msm Felix :/
« Última modificação: 15 de Agosto de 2013, 13:32 por iagosallezze »

Offline Solid One

  • Usuário Ubuntu
  • *
  • Mensagens: 276
  • Linux for human beings
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #5 Online: 14 de Agosto de 2013, 17:53 »
O erro parece ser relacionado a permissão de leitura de arquivos. Supostamente, o usuário padrão do apache (que o PHP utiliza para leitura de scripts) não consegue ler o arquivo "funcoes.php", acusando erro de "Permissão Negada".

O arquivo "funcoes.php", que você está chamando via include, onde ele está situado? Em /var/www, ou outro diretório chamado via link simbólico ou similar?

Pressupondo que o arquivo esteja com nível de permissões que o torne ilegível para outros usuários do sistema, uma provável solução seria você mudar as permissões via chmod, mudando-a para 777.
« Última modificação: 14 de Agosto de 2013, 17:54 por Solid One »

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #6 Online: 15 de Agosto de 2013, 13:34 »
Ola Solid One...

Minha estrutura esta assim:

/var/www/intranet/index.php


e o local da include e:

/var/www/intranet/includes/funcoes.php

Quanto a permissao, ja efetuei o CHMOD 7777 nele...

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #7 Online: 15 de Agosto de 2013, 14:14 »
O usuário só precisa de permissão de leitura para os scripts, e de execução pro diretório.

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #8 Online: 15 de Agosto de 2013, 14:23 »
Qual o resultado do comando:

Código: [Selecionar]
ls -l /var/www/intranet/
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline Solid One

  • Usuário Ubuntu
  • *
  • Mensagens: 276
  • Linux for human beings
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #9 Online: 15 de Agosto de 2013, 15:26 »
Posso estar enganado, mas acho que para o comando "include" funcionar, o arquivo a ser incluído precisa ser uma classe com nome igual ao arquivo. Ou seja, o arquivo "funcoes.php" deve obrigatoriamente começar com algo do tipo:

Código: [Selecionar]
<?php
class funcoes {
    public function 
converteNumeroString($numero){
        return (string)
$numero;
    }
}
?>


Se for esse o caso, uma solução é transformar esse arquivo em classe, tal como ilustrado no exemplo acima. E uma vez feito, você poderia chamar a função "converteNumeroString" mais ou menos da seguinte forma, na página "index.php":

Código: [Selecionar]
<?php
include "funcoes.php";
$funcoes = new funcoes();
echo 
$funcoes->converteNumeroString(123);
?>


No entanto, para facilitar, você pode simplesmente trocar "include" por "require", já que este não requer que o arquivo seja uma classe. Utilizando require, acredito que o código funcionará estando da seguinte forma:

Código: [Selecionar]
<?php
public function converteNumeroString($numero){
    return (string)
$numero;
}
public function 
converteStringNumero($string){
    return (int)
$string;
}
?>


E você poderá chamar a função da seguinte forma:

Código: [Selecionar]
<?php
require "funcoes.php";
echo 
converteNumeroString(123);
?>


Teste isso, pra ver se não resolve. Acredito que isso sirva para demonstrar as maiores diferenças entre o comando "include" e "require" em PHP.
« Última modificação: 15 de Agosto de 2013, 15:29 por Solid One »

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #10 Online: 15 de Agosto de 2013, 15:41 »
Primeiramente obrigado a todos que estão tentando me ajudar.. Realmente preciso disso funcionando...

Bem...

agente100gelo, o resultado do comando foi:

drwx--S--- 3 nobody root 4096 Aug 13 21:48 css
drwx--S--- 2 nobody root 4096 Aug 13 21:48 ducoprint
-rwsrwsrwt 1 nobody root 1679 Dec 12  2012 ducoprint.php
-rwsrwsrwt 1 nobody root  943 Dec 11  2012 graficos.html
drwx--S--- 2 nobody root 4096 Aug 13 21:48 img
drwx--S--- 2 nobody root 4096 Aug 13 21:48 includes
-rwxr--r-- 1 nobody root 1336 Aug 15 15:39 index.php
-rwsrwsrwt 1 nobody root 1616 Jul 26 13:33 intranet.php
drwx--S--- 2 nobody root 4096 Aug 13 21:48 js
drwx--S--- 2 nobody root 4096 Aug 13 21:48 novidades
drwx--S--- 2 nobody root 4096 Dec 18  2012 suprivix

Solid One, fiz o teste usando require como você sugeriu e o problema persiste o mesmo.

A respeito de classes e etc... Esse sistema foi feito em php por mim e funciona já em servidores windows aqui... Os apaches + php rodam perfeitamente os mesmos arquivos que estão hospedados no ubuntu server...

Ou seja, acredito que não seja um problema na programação do php...

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #11 Online: 15 de Agosto de 2013, 16:24 »
Falta acertar a permissão do diretório. Dê rx pro "outros" ou altere o dono/grupo pro www-data.

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #12 Online: 15 de Agosto de 2013, 16:25 »
Essa permissão nobody:root tá estranha.

Digite:
Código: [Selecionar]
sudo chown -R usuario.usuario /var/www/intranet
Onde usuário é seu login.

Agora você poderá editar direto na pasta.
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #13 Online: 15 de Agosto de 2013, 16:38 »
Senhores... Funcionou... Era como o próprio erro dizia problema na permissão... Fiz como dito e agora esta ok...

Primeiramente meu MUITO obrigado a todos... E segundo, para finalizar uma dúvida que me ficou então...

Eu imaginava que, quando dava permissão a uma pasta, automaticamente dava a mesma permissão para todas as subpastas e arquivos... Isso não ocorre?  Ou como posso fazer para que isso ocorra?

Offline iagosallezze

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: PHP nao acessa includes
« Resposta #14 Online: 15 de Agosto de 2013, 16:40 »
Encontrei.. E o -R como parâmetro né!!!

Então é isso... Obrigado a todos :D