Hi

I'm running PHP in safe mode, and have symlinked executables to the
execution_dir, that works great. With one exception, it is not
possible to check the existence of the files, before executing them.

It seems to me that stat / lstat resolves the ownership of the orig
executables and safe_mode decides that I cannot have access, which is
true, but I only want to know if the files that I'm about to execute,
ie. the symlinks, exists.

Is this a bug, or have I misunderstood something. Any suggestions on
how I can solve this.

Example:
<?php
$smed = ini_get('safe_mode_exec_dir');

$id = $smed.'identify';

var_dump(stat($id));
var_dump(lstat($id));

echo '<br />is_file: ';
var_dump(is_file($id));
echo '<br />is_link: ';
var_dump(is_link($id));
echo '<br />is_executable: ';
var_dump(is_executable($id));
echo '<br />is_readable: ';
var_dump(is_readable($id));


echo '<br /><br /><br />';

passthru($id.' -version');
?>

Result:

Warning: stat() [function.stat]: SAFE MODE Restriction in effect. The script whose 
uid/gid is 33/33 is not allowed to access /var/lib/typo3/shared/smexec/identify owned 
by uid/gid 0/0 in /var/www/file_existence_check.php on line 6

Warning: stat() [function.stat]: stat failed for /var/lib/typo3/shared/smexec/identify 
in /var/www/file_existence_check.php on line 6
bool(false)
Warning: lstat() [function.lstat]: SAFE MODE Restriction in effect. The script whose 
uid/gid is 33/33 is not allowed to access /var/lib/typo3/shared/smexec/identify owned 
by uid/gid 0/0 in /var/www/file_existence_check.php on line 7

Warning: lstat() [function.lstat]: Lstat failed for 
/var/lib/typo3/shared/smexec/identify in /var/www/file_existence_check.php on line 7
bool(false)
is_file: bool(false)
is_link: bool(false)
is_executable: bool(false)
is_readable: bool(false)


Version: ImageMagick 6.0.6 08/31/04 Q16 http://www.imagemagick.org Copyright: 
Copyright (C) 1999-2004 ImageMagick Studio LLC 



--
./Christian Jul Jensen

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

Reply via email to