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: Don Graver (dgraver)
Subject: RE: [Phpgroupware-users] VFS and M$ issues
Date: Tue, 16 Dec 2003 18:08:19 -0000

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




reply via email to

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