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

Reply via email to