Pregunta

Dentro de PHP (XAMPP) instalado en una computadora Windows XP, estoy tratando de leer un DIR que existe en un servidor de red local. Estoy usando is_dir() Para verificar si es un director que puedo leer.

En Windows Explorer escribo \\\server\dir Y ese directante se está mostrando. Cuando mapeo una unidad de red A puede acceder a ella con z:\dir también.

En PHP tengo ese script:

<?php if( is_dir($dir){ echo 'success' } ) ?>

Para $dir Lo intenté:

  • /server/dir
  • //server/dir
  • \server\dir
  • \\server\dir
  • \\\\server\\dir

y

  • z:\dir
  • z:\\dir
  • z:/dir
  • z://dir

¿Pero nunca tengo éxito? ¿Alguna idea? gracias

¿Fue útil?

Solución

Lo resolví cambiando algunas cosas en el registro del servidor como se explica en la última respuesta de esta discusión:

http://bugs.php.net/bug.php?id=25805

¡Gracias a Volkerk y Gumbo de todos modos! ¡Me encanta Stackoverflow y sus grandes personas que te ayudan tan increíblemente rápido!

Editar (tomado de php.net):

El servicio tiene acceso limitado a recursos de red, como acciones y tuberías, porque no tiene credenciales y debe conectarse utilizando una sesión nula. La siguiente clave del registro contiene los valores nullsessionPipes y nullsessionshares, que se utilizan para especificar las tuberías y las acciones a las que pueden conectarse las sesiones nulas: HKEY_LOCAL_MACHINE SYSTEM CurrentControlset Services LanManserver Parámetros Alternativamente, puede agregar el valor Reg_dword RestrictNullSessaccess a The Key Key Key Key y configurarlo en 0 para permitir que todas las sesiones nulas accedan a todas las tuberías y acciones creadas en esa máquina.

Agregue RestrictnullSessAccess = 0 a su registro.

Otros consejos

Probablemente permita que XAMPP instale Apache como servicio y ejecute los scripts PHP a través de este Apache. Y el servicio Apache (que se ejecuta como sistema local) no está permitido acceder a la red como es su cuenta de usuario.

Un servicio que se ejecuta en el contexto de la cuenta de LocalSystem hereda el contexto de seguridad del SCM. El usuario SID se crea a partir del valor Security_Local_System_RID. La cuenta no está asociada con ninguna cuenta de usuario registrada.
Esto tiene varias implicaciones:
...
   * El servicio presenta las credenciales de la computadora a servidores remotos.
...

Puede probar esto iniciando la aplicación Apache como consola (apache_start.bat en el directorio XAMPP debe hacerlo) y ejecute el script nuevamente. Puede usar cortes hacia adelante y hacia atrás en la ruta UNC. Sugeriría usar // servidor /compartir ya que a PHP no le importa /en literales de cadena.

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

Prueba el file: Esquema URI:

file://server/dir
file:///Z:/dir

El comienzo es siempre file://. El siguiente segmento de ruta es el servidor. Si está en su máquina local, déjela en blanco (ver el segundo ejemplo). Ver también Archivo URI en Windows.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top