ID: 25805 Comment by: dr_no at moonraker dot com Reported By: mattj at exitcare dot com Status: Bogus Bug Type: Directory function related Operating System: Windows 2003 Web Server PHP Version: 4.3.3 New Comment:
Hi there ! Had the same problem... but solved it :) in fact it IS permission related... (like [EMAIL PROTECTED] said) my conf: WEBsrvr nt5 + Apache/1.3.24 (Win32) PHP/4.3.4RC3-dev SMBsrvr nt5 the deal: WEBsrvr access a share on SMBsrvr with opendir() the problem: $d = opendir('\\SMBsrvr\whatever'); Warning: opendir(\\SMBsrvr\whatever): failed to open dir: Invalid argument in C:\Inetpub\www\script.php on line x --`this is not a usefull warning !` $fp = fopen('\\SMBsrvr\whatever\file.ext','rb'); Warning: fopen(\\SMBsrvr\whatever\file.ext): failed to open stream: Permission denied in C:\Inetpub\www\script.php on line y --`hmm, hmm, more interresting...` At this point had to investigate a bit more: Apparently apache + php know that \\SMBsrvr\whatever exists and that it is a valid directory ressource... Did some packet log on SMBsrvr: WEBsrvr sends a SMB `Tree Connect AndX Request` using nullSession SMBsrvr replies by an ACCESS_DENIED gotcha ! SMBsrvr doesn't allow nullSession... but why WEBsrvr tries to connect using nullSession ? because Apache is running as LocalSystem >From MSDN: `Windows NT - LocalSystem: 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.` Enough blabla: Either you allow the host of share to accept nullSessions or you create an account with enough privileges on the apache host and when in mmc/Services/Apache/Connexion "Open a session as" - use the newly created account... All of this is true for Apache, but it should be 'approximatively' the same concept for IIS... a few references for this 'bug' (that is not) http://bugs.php.net/bug.php?id=24795 http://bugs.php.net/bug.php?id=22153 http://bugs.php.net/bug.php?id=20813 http://bugs.php.net/bug.php?id=13058 http://bugs.php.net/bug.php?id=12524 attn to: [EMAIL PROTECTED]; [EMAIL PROTECTED] there are a lot of bug reports for this local config. problem maybe an addendum in the documentation could be usefull... sorry for my bad english... /hth /bye dr_no Previous Comments: ------------------------------------------------------------------------ [2003-10-12 00:27:37] [EMAIL PROTECTED] Not enough information, assuming this is run under IIS where this document applies: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q189408 ------------------------------------------------------------------------ [2003-10-10 13:41:45] mattj at exitcare dot com I redid the share to be called 'fdrive'. Then updated my script accordingly: <?php $dir1 = "\\\\matt\\fdrive\\"; $dir2 = "\\\\192.168.0.6\\fdrive\\"; $dir3 = "//matt/fdrive/"; $dir4 = "//192.168.0.6/fdrive/"; opendir($dir1); opendir($dir2); opendir($dir3); opendir($dir4); ?> But I still get: Warning: opendir(\\matt\fdrive\): failed to open dir: Invalid argument in C:\Inetpub\wwwroot\ExitCareWeb\test.php on line 6 Warning: opendir(\\192.168.0.6\fdrive\): failed to open dir: Invalid argument in C:\Inetpub\wwwroot\ExitCareWeb\test.php on line 7 Warning: opendir(//matt/fdrive/): failed to open dir: Invalid argument in C:\Inetpub\wwwroot\ExitCareWeb\test.php on line 8 Warning: opendir(//192.168.0.6/fdrive/): failed to open dir: Invalid argument in C:\Inetpub\wwwroot\ExitCareWeb\test.php on line 9 ------------------------------------------------------------------------ [2003-10-10 11:39:33] [EMAIL PROTECTED] Try renaming those shares not to have that space in them, for example 'F Drive' -> 'F_Drive'.. ------------------------------------------------------------------------ [2003-10-10 09:17:42] mattj at exitcare dot com It is not security. I went to the Sharing tab and clicked the Perissions button for the F Drive Share. I gave Everyone full control. I also went to the Security tab and set Everyone to full control. Applied the changes, reran the script. Exact same result. ------------------------------------------------------------------------ [2003-10-10 07:03:46] [EMAIL PROTECTED] "To anyone who needs to use UNC mapped drives with OpenDir(), if you are having a problem with OpenDir() reading the directory, check your permissions for the share on the host machine. Start with giving full permission to everyone (which should work fine) and then back accessability until you have a problem." from bug #22153 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/25805 -- Edit this bug report at http://bugs.php.net/?id=25805&edit=1