Eu entrei no meu servidor de desenvolvimento hoje para descobrir que o PHP não estava incluindo alguns arquivos com essa mensagem E_WARNING:
Aviso: include_once (../pasta2.php) [function.include-once]: falha ao abrir fluxo: Nenhum arquivo ou diretório em /var/www/web/some_directory_1/file1.php on-line o que quer que seja
Eu fiz algumas pesquisas com nosso sysadmin e descobrimos que o PHP só falha quando tenta incluir caminhos de arquivo com um '../' ou './' no caminho.
Suponha que nossa estrutura de arquivos seja assim:
/ var / www / web /
- index.php
- file2.php
- some_directory_1 /
---- file1.php
---- file3.php
Se file1.php quiser incluir file2.php, isso funcionará:
include_once('/var/www/web/file2.php');
Mas isso não vai acontecer:
include_once('../file2.php');
Agora, espere um segundo ... Eu sei o que você está pensando! "Oh, seu include_path é apenas FUBAR." Bem, não exatamente.
Se você fizer isso no index.php, ele funciona:
include_once('some_directory_1/file1.php');
E se você fizer isso em file1.php, ele também funciona:
include_once('file3.php');
Nosso include_path está definido como .:/usr/lib/php
. Nada sobre o ambiente do servidor foi alterado nas últimas 24 horas (sem atualizações, sem novo software, sem alterações nos includes, sem alterações nas configurações do Apache ou do PHP), eu e o sysadmin foram as únicas pessoas que acessaram o servidor no últimas 24 horas, e os includes estavam funcionando bem ontem. Nós esgotamos nossa lista de possíveis causas. Alguma pista do que poderia causar isso?
Editar: Esqueceu a mensagem de aviso do PHP.