phpgroupware-users
[Top][All Lists]
Advanced

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

Re: [Phpgroupware-users] VFS and M$ issues


From: Daryl L. L. Houston
Subject: Re: [Phpgroupware-users] VFS and M$ issues
Date: Tue, 16 Dec 2003 13:17:57 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007

What kind of headers are you sending? Sending "Cache-Control" and "Pragma: no-cache" headers can cause problems with downloading in MSIE. Check out https://www.redhat.com/support/resources/faqs/stronghold3/browser_faq.html for more info.

D



Don Graver (dgraver) wrote:

Thanks Chris, but I think something is still going on with the VFS b/c
if I take a file and put in a web accessible directory... then I can get
it without problems.  However, when I upload it via the VFS, then copy
(cp) the file to the same web accessible directory with the same
permissions (644) as the original file, then I can't access it.  Does
VFS actually change permissions within the file?  Thanks again for all
the help.

-- Don Graver


-----Original Message-----
From: address@hidden [mailto:address@hidden On Behalf Of Chris Weiss
Sent: Tuesday, December 16, 2003 6:45 PM
To: address@hidden
Subject: Re: [Phpgroupware-users] VFS and M$ issues


the problem is MS's. ms office products simple do not like accessing an office document via a dynamic url as phpgw does. They want to login to the remote machine and try to get read/write access to the doc and can't even get read only because they won't carry over the session from IE or mozilla (people actually still use the Netscape brand?).

I haven't had a a problem with pdf's so I don't know the issue there.

you're not doing anything wrong, microsoft is.

Don Graver (dgraver) (address@hidden) wrote:
I am hoping somone with VFS knowledge can help me out on this
one...or
M$ knowledge. First of all, I added the ability for users to attach files to calendar events, so that other users can just click on the attachment and the file displays/saves on their computer. Everything seems to work fine with updating the phpgw_vfs table, displaying the links to the files themselves, even removing them. However... When a user on a Microsoft 2000 (haven't tested other versions) machine clicks on the link and it tries to open an Excel file it fails with the following error "Filename.xls cannot be accessed. The file may be read-only or you may be trying to access a read-only
location. Or, the
server document is stored on may not be responding.". If a user tries to open a .pdf file he just gets an image displayed on the web browser. If a user tries to open a Powerpoint file he gets
"Powerpoint
cannot open the type of file represented by D:/...../Filename.ppt".

.txt, .doc, .csv, and image files seem to work just fine with no problems.

Now, I have tested to make sure that it is not just the way I stream the file to the user by copying the files directly from there source (RELATIVE_ROOT) to another web accessible spot on the server
and tried
accessing them that way, but get the same errors. I have
even checked
to make sure that my attach_file function is not corrupting the data by comparing the data string before and after to make sure they are equal. To make things even more confusing, all my Linux boxes have absolutely no problem opening up these files using OpenOffice...so I am at a loss...and still hating M$. Anyone else ever heard
of this or
seen this??

The gory details:
All attached files have uog+rw permissions...with wwwrun as the owner and nogroup as the group. The machine is a Suse 8.2, and running mysql, with php4, and phpgw 0.9.14.512.

Here is what I do:
/calendar/inc/class.bocalendar.inc.php

    $this->attach_file('calendar',$tmp_event['id'],$tmp_file);

$tmp_file looks like this:
# Array:
Name - BCS.xls
Type - application/excel
tmp_name - /tmp/phpaGAwre
Size  - 22528



And here is my vfs->attach_file function (copied and pasted so some lines have an extra ''):
               function attach_file($app,$id,$file,$comment='')
               {
                       if ($this->debug)
                       {
echo "<p>attach_file: app='$app', id='$id', tmp_name='$file[tmp_name]', name='$file[name]', size='$file[size]', type='$file[ty pe]', path='$file[path]', ip='$file[ip]', comment='$comment'</p>n";
                       }
// create the root for attached files in calendar, if it does not exists
                       if (!($this->vfs->file_exists(array(
'string'=>
$this->vfs_basedir,

'relatives'=>array(RELATIVE_ROOT)))))
                       {
                               $this->vfs->override_acl = 1;
                               $this->vfs->mkdir(array(
'string'=> $this->vfs_basedir,

'relatives'=>array(RELATIVE_ROOT)));
                               $this->vfs->override_acl = 0;
                       }

                       $dir=$this->vfs_path($app);
                       if (!($this->vfs->file_exists(array(
'string'=>
$dir,

'relatives'=>array(RELATIVE_ROOT)))))
                       {
                               $this->vfs->override_acl = 1;
                               $this->vfs->mkdir(array(
'string'=> $dir,

'relatives'=>array(RELATIVE_ROOT)));
                               $this->vfs->override_acl = 0;
                       }
                       $dir=$this->vfs_path($app,$id);
                       if (!($this->vfs->file_exists(array(
'string'=>
$dir,

'relatives'=>array(RELATIVE_ROOT)))))
                       {
                               $this->vfs->override_acl = 1;
                               $this->vfs->mkdir(array(
'string'=> $dir,

'relatives'=>array(RELATIVE_ROOT)));
                               $this->vfs->override_acl = 0;
                       }
$fname = $this->vfs_path($app,$id,$file['name']);
                       $tfname = '';
                       if (!empty($file['path']))
                       {
$file['path'] = str_replace('\\','/',$file['path']); // vfs uses only '/'
                               @reset($this->link_pathes);
                               while ((list($valid,$trans) =
@each($this->link_pathes)) && !$tfname)
{ // check case-insensitive for WIN etc.
                                       $check = $valid[0] == '\' ||
strstr(':',$valid) ? 'eregi' : 'ereg';
$valid2 = str_replace('\','/',$valid); //echo "<p>attach_file: ereg('".$this->send_file_ips[$valid]."',
'$file[ip]')=".ereg($this->send_file_ips[$valid],$fil
e['ip'])."</p>n";
                                       if
($check('^('.$valid2.')(.*)$',$file['path'],$parts) &&

ereg($this->send_file_ips[$valid],$file['ip']) &&     // right IP

$this->vfs->file_exists(array(
'string'=> $trans.$parts[2],

'relatives'=>array(RELATIVE_NONE|VFS_REAL))))
                                       {
$tfname = $trans.$parts[2];
                                       }
//echo "<p>attach_file: full_fname='$file[path]', valid2='$valid2', trans='$trans', check=$check, tfname='$tfname', pa rts=(x,'$','$')</p>n";
                               }
                               if ($tfname &&
!$this->vfs->securitycheck(array( 'string'=> $tfname)))
                               {
                                       return False; //lang('Invalid
filename').': '.$tfname;
                               }
                       }
                       $this->vfs->override_acl = 1;
                       if ($tfname)    // file is local
                       {

$this->vfs->symlink($tfname,$fname,array(RELATIVE_NONE|VFS_REAL,RELATI
VE
_ROOT));
                       }
                       else
                       {
                         $this->vfs->cp(array( 'from'=>
$file['tmp_name'],
                                               'to'=>$fname,

'relatives'=>array(RELATIVE_NONE|VFS_REAL,RELATIVE_ROOT)));
                       }
                       $this->vfs->set_attributes (array(
'string' => $fname,
                                       'relatives'     => array
(RELATIVE_ROOT),
                                       'attributes'    => array
('mime_type' => $file['type'],
'comment' => stripslashes ($comment), 'app' => $app)));
                       $this->vfs->override_acl = 0;

$link = $this->info_attached($app,$id,$file['name']); return is_array($link) ? $link['file_id'] : False;
               }
-- Don Graver


_______________________________________________
Phpgroupware-users mailing list
address@hidden http://mail.gnu.org/mailman/listinfo/phpgroupware-users




_______________________________________________
Phpgroupware-users mailing list
address@hidden http://mail.gnu.org/mailman/listinfo/phpgroupware-users


_______________________________________________
Phpgroupware-users mailing list
address@hidden
http://mail.gnu.org/mailman/listinfo/phpgroupware-users






reply via email to

[Prev in Thread] Current Thread [Next in Thread]