windows altında php erişim ağı yolu

3 Cevap php

PHP içinde (XAMPP) bir yerel ağ sunucusu üzerinde bulunan bir dir okumaya çalışan bir Windows XP Bilgisayar Im yüklü. Kullanarak Im is_dir() ben okuyabileceği bir dizin olup olmadığını kontrol etmek.

In Windows Explorer I type \\\server\dir ve that dir is being shown. When I map a network drive a can access it with z:\dir as well.

PHP Ben o senaryoyu var:

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

$dir Denedim için:

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

ve

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

But I never get success? Any idea? thx

3 Cevap

Bu tartışmanın son cevapta açıklandığı gibi sunucu kayıt defterinde bazı şeyler değiştirerek bunu çözdü:

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

Thanks to VolkerK and Gumbo anyway! I love stackoverflow and their great people who help you so incredibly fast!!

(Php.net alınan) EDIT:

The service has limited access to network resources, such as shares and pipes, because it has no credentials and must connect using a null session. The following registry key contains the NullSessionPipes and NullSessionShares values, which are used to specify the pipes and shares to which null sessions may connect: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters Alternatively, you could add the REG_DWORD value RestrictNullSessAccess to the key and set it to 0 to allow all null sessions to access all pipes and shares created on that machine.`

Lütfen Sicili'nde için = 0 RestrictNullSessAccess ekleyin.

Muhtemelen xampp servis olarak apache kurmak ve php scriptler bu apache çukur çalışmasına izin. Ve apache hizmeti (olarak çalışan localsystem) ağını kullanıcı hesabı bir şekilde erişmek için izin verilmez.

A service that runs in the context of the LocalSystem account inherits the security context of the SCM. The user SID is created from the SECURITY_LOCAL_SYSTEM_RID value. The account is not associated with any logged-on user account.
This has several implications:
...
   * The service presents the computer's credentials to remote servers.
...

Sen konsol uygulaması (xampp dizininde apache_start.bat bunu gerektiği) gibi apache başlayan bu test ve tekrar komut dosyasını çalıştırabilirsiniz. Sen unc yolunda hem ileriye ve geriye doğru eğik çizgi kullanabilirsiniz. Php içinde dize hazır / önemsemiyor çünkü ben / / sunucu / payını kullanarak öneririm.

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

file: URI şemasını deneyin:

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

Başlamak her zaman file://. Sonraki yol kesimi sunucusudur. Sizin yerel makinede ise, (ikinci örneğe bakın) boş bırakın. Ayrıca bakınız File URIs in Windows.