php aceder a caminho de rede no windows
-
18-09-2019 - |
Pergunta
dentro de PHP (XAMPP) instalado em um Computador com Windows XP, estou tentando ler um dir que existe em um servidor de rede local.Im usando is_dir()
para verificar se é um diretório que eu possa ler.
No Windows Explorer, e tipo, eu \\\server\dir
e que dir está sendo mostrado.Quando eu mapeie uma unidade de rede um pode acessá-lo com z:\dir
bem.
No PHP eu tenho esse script:
<?php if( is_dir($dir){ echo 'success' } ) ?>
Para $dir
Eu tentei:
/server/dir
//server/dir
\server\dir
\\server\dir
\\\\server\\dir
e
z:\dir
z:\\dir
z:/dir
z://dir
Mas eu nunca obter sucesso?Alguma idéia?thx
Solução
Eu resolvi que alterar algumas coisas no registro do servidor, conforme explicado na última resposta desta discussão:
http://bugs.php.net/bug.php?id=25805
Graças a VolkerK e Gumbo de qualquer maneira!Eu amo stackoverflow e os seus grandes as pessoas que nos ajudam de modo incrivelmente rápido!!
EDITAR (tomadas a partir de php.net):
O serviço tem acesso limitado a recursos de rede, tais como acções e pipes, porque ele não tem credenciais e deve se conectar usando um null sessão.A seguinte chave do registro contém o NullSessionPipes e NullSessionShares valores, que são utilizados para especificar os tubos e ações para que as sessões nulas podem se conectar:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters Como alternativa, você pode adicionar o valor de REG_DWORD RestrictNullSessAccess para a chave e defina-o como 0 para permitir que todos null sessões para aceder a todas as tubulações e partilhas criadas na máquina.`
adicionar RestrictNullSessAccess=0 registery.
Outras dicas
Você provavelmente permite que o XAMPP instale o Apache como serviço e execute os scripts PHP. E o serviço Apache (em execução como Localsystem) não tem permissão para acessar a rede da maneira como sua conta de usuário é.
Um serviço que é executado no contexto da conta do sistema local herda o contexto de segurança do SCM. O usuário SID é criado no valor do Security_Local_System_Rid. A conta não está associada a nenhuma conta de usuário conectada.
Isso tem várias implicações:
...
* O serviço apresenta as credenciais do computador para servidores remotos.
...
Você pode testar isso iniciando o aplicativo Apache como console (apache_start.bat no diretório XAMPP deve fazer isso) e executar o script novamente. Você pode usar barras para frente e para trás no caminho UNC. Eu sugiro usar // servidor /compartilhar, pois o PHP não se importa com /em literais de string.
<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo "\n</pre>";
Tente o file:
Esquema URI:
file://server/dir
file:///Z:/dir
O começo é sempre file://
. O próximo segmento de caminho é o servidor. Se estiver na sua máquina local, deixe -a em branco (veja o segundo exemplo). Veja também Arquive Uris no Windows.