Jump to content
acao

[Resolvido] include_once erro em directorio

Recommended Posts

acao

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
acao

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

Share this post


Link to post
Share on other sites
Pivot

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

Abraço,

Rafael.

Share this post


Link to post
Share on other sites
acao

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
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

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