[PHP] file_exists nao funciona [12% insane]

PHP devia ser banido?

  • Sim

    Votes: 5 27,8%
  • Nao

    Votes: 13 72,2%

  • Total voters
    18

Armadillo

Folding Member
boas pessoal :hello:

Código:
//...
if(file_exists($pathOrigem . $FicheiroOrigem))
//...
Esta instrucção nao me retorna o valor True mesmo existindo o ficheiro.
Alguma razao para isso?
 
Última edição:
Pode acontecer.
Faz echo de $pathOrigem.$FicheiroOrigem, podes estar a indicar um caminho invalido.

tou farto de fazer echos e var_dumps, ta tudo ok - os fichs existem...
tambem ja faço antes do if clearstatcache.

Tou a desenvolver em ambiente Windows, poderá haver uma causa-efeito devido ao OS?

safe_mode_include_dir string UID/GID checks are bypassed when including files from this directory and its subdirectories (directory must also be in include_path or full path must including).
As of PHP 4.2.0, this directive can take a colon (semi-colon on Windows) separated path in a fashion similar to the include_path directive, rather than just a single directory. The restriction specified is actually a prefix, not a directory name. This means that "safe_mode_include_dir = /dir/incl" also allows access to "/dir/include" and "/dir/incls" if they exist. When you want to restrict access to only the specified directory, end with a slash. For example: "safe_mode_include_dir = /dir/incl/" If the value of this directive is empty, no files with different UID/GID can be included in PHP 4.2.3 and as of PHP 4.3.3. In earlier versions, all files could be included.
alguém me pode trocar isto em miudos?

Por exemplo, o caminho do meu ficheiro tem este aspecto: \\machine\dados\2006\Loja\FACTURA_Loja200629668-2941-20061026.txt
o caminho ta definido assim:$p_regFacturas="\\\machine\dados\\";

Usando PHP Version 4.4.3.
 
Última edição:
If you are trying to access a Windows Network Share you have to configure your WebServer with enough permissions for example:

$file = fopen("\\siscomx17\c\websapp.log",'r');

You will get an error telling you that the pathname doesnt exist this will be because Apache or IIS run as LocalSystem so you will have to enter to Services and configure Apache on "Open a session as" Create a new user that has enough permissions and also be sure that target share has the proper permissions.

Hope this save some hours of research to anyone.

Algo que estava nos comentarios na pagina de ajuda da funçao file_exists.
 
antes ja tinha tentado com o nome fisico (mesmo fisico do tipo c:\programas\......) do ficheiro e nao funcionava também. Esta partilha encontra-se na minha maquina que tambem é o meu servidor.
 
Última edição:
acho que nao consigo abrir o log. o ficheiro só tem 74194102 KB = 70Gb.
Ja apaguei o ficheiro e mesmo assim, quando volto a executar o php, volta-me aos 70GB.

:offtopic: isto é normal???
 
Apache a correr no windows - wamp do sugarCRM 4.5.1e (Build 1049)

Apache Version Apache/2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8a PHP/4.4.3
Apache API Version 20020903
 
Última edição:
Ainda aí coisa estranha... Esse error-log é comum a todos os sites (supondo que tenhas mais sites no mesmo servidor)? Se sim, cria um error-log próprio para esse site.
Não precisas de abrir o ficheiro, basta um 'tail -f /path/to/error-log'.

EDIT: just in case... Unix Style Tail Command
 
Última edição:
Presumo que o log é comum a todos os sites, mas so tenho um na minha maquina. Desculpa-me a ignorancia: 'tail -f /path/to/error-log'. O que queres dizer com isto?
me:Windows_guy; you:slack_guy ;)

edit: ja vi o teu edit...
 
Epa... parece-me que tens aí um problema maior que o problema inicial.
Eu cá não fazia mais nada enquanto não conseguisse ler o que está no log. Pára o servidor... copia o log para outro disco... faz o pino ou dá cambalhotas :-) mas arranja maneira de ver o que está no log.
 
ok, vou fazer uma app para cortar o ficheiro em ficheiros mais pequenos a ver se consigo abrir o ficheiro, pq com 70GB acho que nada o vai conseguir abrir (será que aminha app o vai conseguir cortar aos pedaços?)

Obrigado pela ajuda
 
Terminei e reiniciei o serviço do Apache e o ficheiro passou-me para uns miseros 865 bytes.

Aqui vai o log:
Código:
[Fri Dec 28 10:19:30 2007] [notice] Apache/2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8a PHP/4.4.3 configured -- resuming normal operations
[Fri Dec 28 10:19:30 2007] [notice] Server built: Jul 21 2006 08:48:52
[Fri Dec 28 10:19:30 2007] [notice] Parent: Created child process 908272
[Fri Dec 28 10:19:32 2007] [notice] Child 908272: Child process is running
[Fri Dec 28 10:19:32 2007] [notice] Child 908272: Acquired the start mutex.
[Fri Dec 28 10:19:32 2007] [notice] Child 908272: Starting 250 worker threads.
[Fri Dec 28 10:19:58 2007] [error] [client 127.0.0.1] PHP Warning:  file(C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\dados\\) [<a href='function.file'>function.file</a>]: failed to open stream: Permission denied in C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\sync\\importar_facturas.php on line 100
tenho um permission denied. E agora?

EDIT: Tou a dar permissoes totais nesse directorio a todos os utilizadores. Deve ser isto certo?
 
Última edição:
OK! aí está o teu problema... não tens permissões para abrir o ficheiro.
Verifica as permissões do ficheiro e das respectivas pastas. Estás 5/10 minutos de resolver o problema :-)

EDIT: provavelmente não precisas das mensagens 'notice' no log do apache. No ficheiro httpd.conf sobe o 'LogLevel' para 'warn'.
 
Última edição:
Mesmo dando permissoes full a todos os utilizadores, continua a dar a mesma mensagem erro:
Código:
[Fri Dec 28 10:31:21 2007] [error] [client 127.0.0.1] PHP Warning:  file(C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\dados\\) [<a href='function.file'>function.file</a>]: failed to open stream: Permission denied in C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\sync\\importar_facturas.php on line 100
 
Pode ser nabice minha, mas em "file(C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\dados\\)" não vejo nenhum ficheiro, só directorias.
 
Back
Topo