Jump to content

[Resolvido] include_once erro em directorio


Recommended Posts

Posted (edited)

boas

tenho um erro de include referente ao directorio ao incluir uma classe, erro que não consigo desvendar.

tenho os seguintes directorios:

raiz --> Classes -->Classesglobais -->ficheiroConexao.php

( )---> ( ) -->Classreg -------->ficheiroDao.php (ficheiroDao.php tem include_once a chamar ficheiroConexao.php)

e o ficheiroregisto.php (está na raiz)

situação 1- ficheiroDao.php chamar ficheiroConexao.php.

Include_once '../Classesglobais/ficheiroConexao.php'

situação 2 - ficheiroRegisto.php chama ficheiroDao.php.

include_once 'Classes/Classesreg/ficheiroDao.php'

as 2 situações estao correctas ?

acontece que se eliminar o include da 2 situação não tenho erro.

e se colocar o ficheiroConexao na classreg funciona tudo correcto. depois de ajustar o include do ficheiro.

alguma dica agradeço

edit: tenhos os seguintes erros.

Warning: include_once(../ClassGlobls/ClassConexaoAv.php): failed to open stream: No such file or directory in C:\xampp\htdocs\

Warning: include_once(): Failed opening '../ClassGlobls/ClassConexaoAv.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs

Fatal error: Class 'ConexaoAv' not found in C:\xampp\htdocs\

cumps

acao

Edited by acao
Posted

no que toca ao serparador de directório, sinceramente não me lembro porque não uso o windows para essas coisas ... mas ...

Warning: include_once(../ClassGlobls/ClassConexaoAv.php): failed to open stream: No such file or directory in [b]C:\xampp\htdocs\[/b]

como podes ver, o include é relativo ao script chamado e não ao local onde é chamado.

faz as "contas" e verifica onde o include está a procurar o ficheiro:

C:\xampp\htdocs\../ClassGlobls/ClassConexaoAv.php
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Duas variáveis que uso em qualquer projecto que faça :

define('DS', DIRECTORY_SEPARATOR);
define('DR', realpath(dirname(__FILE__)).DS);

@yoda obrigado pela resposta, não conheço logo que possa vou pesquisar.

no que toca ao serparador de directório, sinceramente não me lembro porque não uso o windows para essas coisas ... mas ...

Warning: include_once(../ClassGlobls/ClassConexaoAv.php): failed to open stream: No such file or directory in [b]C:\xampp\htdocs\[/b]

como podes ver, o include é relativo ao script chamado e não ao local onde é chamado.

faz as "contas" e verifica onde o include está a procurar o ficheiro:

C:\xampp\htdocs\../ClassGlobls/ClassConexaoAv.php

@HappyHippyHippo obrigado mais uma vez pela resposta.

eu penso que seja uma chamada à classregistoDao que tenho na pagina registo aonde tenho o formulario e que serve para carregar uma combo, porque se comentar a parte de instanciar a class não dá erro.

questões:

1- pode-se estanciar uma classe numa pagina com «action"pag.php"» ou seja direcionado para uma pagina?

é que eu em registo.php estou a incluir a classregDao, e esta pagina tem o form direcionado para pagina que faz include de

-classconexao.php

-clasReg.php (que esta class chama classregDao e esta chama a classconexao)

alguma sugestão?

eu não queria colocar a classconexao dentro da pasta que tem todos os ficheiros referentes a registo/cadastrar

porque se a colocar aí funciona certinho.

ps: editei o post anterior para se perceber melhor o exemplo de directorios.

os includes estão corectos?

para chamar ficheiro em pasta no mesmo nivel (../nomedapastamesmonivel/ficheiro.php) correto ?

ps: edit: Já deu certo.

coloquei a chamada da classconexão assim : 'NomediretorioNivel1acima/NomediretorioNiveligual/classconexao.php'

ou seja alterei os 2 pontos pelo nome do directorio.

mas as pastas que têm os ficheiros estão no mesmo nivel.

isto é correto ?.

cumps

acao

Edited by acao
Posted (edited)

Se estão no mesmo nível, pela minha experiência, acho que apenas tens de fazer: include_once("nomedoficheiro.php");

Abraço,

Rafael.

estão no mesmo nivel os directorios/pastas.

agora o que acho estranho é: nuns ficheiro chamo assim «../ClassGlobls/ClassConexaoAv.php»

e na classDao tem que ser «nomeDirectorioNivelAcima/ClassGlobls/ClassConexaoAv.php»

e a classDao está na mesma pasta que os outros ficheiros.

e não consigo compreender a razão.

cumps

acao

Edited by acao
Posted

http://php.net/manual/en/function.include.php

Files are included based on the file path given or, if none is given, the include_path specified. If the file isn't found in the include_path, include will finally check in the calling script's own directory and the current working directory before failing. The include construct will emit a warning if it cannot find a file; this is different behavior from require, which will emit a fatal error.

IRC : sim, é algo que ainda existe >> #p@p

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
×
×
  • 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.