Domanda

all'interno di PHP (XAMPP) installato su un computer Windows XP Im cercando di leggere una directory che esiste su un server di rete locale. Im usando is_dir() per verificare se si tratta di una directory che posso leggere.

In Windows Explorer I digitare \\\server\dir e che dir si sta mostrati. Quando ho tracciare l'azionamento di una rete un grado di accedere con z:\dir pure.

In PHP che ho scritto:

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

Per $dir ho provato:

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

e

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

Ma non ho mai ottenere il successo? Qualche idea? thx

È stato utile?

Soluzione

ho risolto cambiando alcune cose nel Registro di sistema del server come spiegato nel l'ultima risposta di questa discussione:

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

Grazie alla VolkerK e Gumbo comunque! Amo StackOverflow e le loro grandi persone che ti aiutano in modo incredibilmente veloce !!

EDIT (tratto da php.net):

  

Il servizio ha un accesso limitato alle risorse di rete, come le azioni   e tubi, perché non ha le credenziali e deve connettersi utilizzando un null   sessione. La seguente chiave di registro contiene le NullSessionPipes e   valori NullSessionShares, che vengono utilizzati per specificare i tubi e   azioni alle quali le sessioni Null possono collegare:   HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters   In alternativa, si potrebbe aggiungere il valore REG_DWORD   RestrictNullSessAccess alla chiave e impostarlo a 0 per consentire a tutti nullo   sessioni di accedere a tutti i tubi e le azioni create in quel machine.`

aggiungere RestrictNullSessAccess = 0 alla registery.

Altri suggerimenti

Probabilmente si lascia xampp installare Apache come servizio ed eseguire gli script php DEPRESSIONE questo apache. E il servizio apache (in esecuzione come localsystem ) è non ha permesso di accedere alla rete il modo in cui il tuo account è.

Un servizio che viene eseguito nel contesto dell'account LocalSystem eredita il contesto di protezione della SCM. Il SID utente viene creato dal valore SECURITY_LOCAL_SYSTEM_RID. L'account non è associato ad alcun account utente connesso .
Questo ha diverse implicazioni:
...
* Il servizio presenta le credenziali del computer ai server remoti .
...

È possibile verificare questa avviando l'Apache come applicazione console (apache_start.bat nella directory XAMPP dovrebbe farlo) ed eseguire nuovamente lo script. È possibile utilizzare entrambi barre avanti e indietro nel percorso UNC. Io suggerirei usando // server / share da PHP non si preoccupa di / in stringhe letterali.

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

Prova lo schema URI file::

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

La partenza è sempre file://. Il segmento di percorso successivo è il server. Se è sul computer locale, lasciare vuoto (vedi secondo esempio). Vedi anche URI file in Windows .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top