Re[2]: problem to open dir

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Vincent,

It'a bad way to do so, becouse the default sharing (like c$, d$,
admins$) could be turned off. This code, should work fine, if the
user, under witch php is running have permissions to access target
folder:
$dir="C:\\Documents and Settings\\pravin\\Desktop\\abcd2\\";
if (is_dir($dir)) {
     if ($dh = opendir($dir)) {
             while (($file = readdir($dh)) !== false) {
             echo "filename: $file : filetype: " . filetype($dir.$file) ."\n";
             }
     closedir($dh);
     }
}
$dir = dir($source);

Also, on win32 system you have to use double slashes in path.

VD> Hi,

VD> I experienced the same problem some time ago.
VD> Try to use \\remote_computer instead of a mounted drive (G:\).
VD> Also, there is something like a BUG in is_dir(). 
VD> The is_dir function does not return the good value for remote
VD> shares. Use !is_file() instead of is_dir().

VD> Make sure your script or the user running the script has
VD> access to the remote drive. I use IIS to do this. Don't know for
VD> Apache but you must be able to run the apache service with a
VD> specific user.


VD> here is a code sample that works for me on paths like //remote_computer/d$/Temp/ :

VD> 		function getChildrenFiles($dir){
VD> 		$output = array();
VD> 		$files = array();
VD> 		if((!is_file($dir))&&($dir_handle = opendir($dir))){
VD> //use !is_file instead of is_dir because of a bug in is_dir with windows shares
VD> 			while($file = readdir($dir_handle)){
VD> 				if($file !== "." && $file !== ".."){
VD> 					$files[] = $file;
VD> 				}//if
VD> 			}//while
VD> 			closedir($dir_handle);
VD> 			for($i=0; $i<sizeof($files);$i++){
			
VD> 	   				$tmpFile = new FileClass("$dir/".$files[$i]);
					
					if (($tmpFile->>isFile())
VD> 						&&(isset($this->allowedExtensions))
VD> 						&&(sizeof($this->allowedExtensions)>0)
VD> 						&&(in_array($tmpFile->getExtension(), $this->allowedExtensions))){
VD> 						$output[] = $tmpFile;
VD> 					}
VD> 					elseif(($tmpFile->isFile())&&((!isset($this->allowedExtensions))||(sizeof($this->allowedExtensions)==0))){
VD> 						$output[] = $tmpFile;
VD> 					}
VD> 					else{
VD> 						$tmpFile=NULL;
VD> 					}

VD> 			}//wfor
VD> 		}//if
VD> 		else{
VD> 			//DEBUG //print("NOT DIR or NOT OPENABLE<br />");
VD> 		}

VD> 		reset($output);
VD> 		return $output;
VD> 	}

VD> -----Original Message-----
VD> From: Gryffyn, Trevor [mailto:TGryffyn@xxxxxxxxxxxxxxxxx]
VD> Sent: mardi 30 novembre 2004 15:40
VD> To: php-windows@xxxxxxxxxxxxx
VD> Cc: Mike; Pravin-Kumar
VD> Subject: RE:  problem to open dir


VD> I think \' is going to quote the single-quote too.  Best to quote the
VD> backslashes I guess.  Change all the \ to \\

VD> Also.. Silly question.. But that directory DOES exist, right?  

VD> I assume the is_dir() line is 69 and the opendir() is line 70, correct?

VD> -TG

>> -----Original Message-----
>> From: Mike [mailto:php@xxxxxxxxxxxx] 
>> Sent: Tuesday, November 30, 2004 12:06 AM
>> To: 'Pravin-Kumar'; php-windows@xxxxxxxxxxxxx
>> Subject: RE:  problem to open dir
>> 
>> 
>> When you set the $dir variable, try doing so with single 
>> quotes - the \
>> character is used to escape things and might be causing some problems.
>> 
>> If that makes no sense, it's because I'm falling asleep.
>> 
>> Good luck.
>> 
>> -M 
>> 
>> > -----Original Message-----
>> > From: Pravin-Kumar [mailto:pravin@xxxxxxxxxxxx] 
>> > Sent: Tuesday, November 30, 2004 12:37 AM
>> > To: php-windows@xxxxxxxxxxxxx
>> > Subject:  problem to open dir
>> > 
>> > hi all
>> > i am getting some unexpected error while try to read a local dir..
>> > it is working on the pc where apache is running ..but same 
>> > code not working while trying from other pcs in lan..
>> > here is code..
>> > $dir="C:\Documents and Settings\pravin\Desktop\abcd2"; if 
>> > (is_dir($dir)) {
>> >     if ($dh = opendir($dir)) {
>> >        while (($file = readdir($dh)) !== false) {
>> >           echo "filename: $file : filetype: " . filetype($dir 
>> > . $file) ."\n";
>> >        }
>> >        closedir($dh);
>> >    	 }
>> > 	}
>> > 
>> > $dir = dir($source);
>> > 
>> > 
>> > giving error:
>> > Warning: dir(C:\Documents and Settings\pravin\Desktop\cdac2): 
>> > failed to open dir: Invalid argument in 
>> > G:\Vyapar\AdvMgmt\addadvt3.php on line
>> > 69
>> > 
>> > Fatal error: Call to a member function on a non-object in 
>> > G:\Vyapar\AdvMgmt\addadvt3.php on line 70




-- 
Best regards,
 re_action                            mailto:re_action@xxxxxxxxxx

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux