[Top][All Lists]
[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
RE: [Phpgroupware-users] VFS and M$ issues, Don Graver (dgraver), 2003/12/16
RE: [Phpgroupware-users] VFS and M$ issues, Chris Weiss, 2003/12/16
RE: [Phpgroupware-users] VFS and M$ issues, Don Graver (dgraver), 2003/12/17
RE: [Phpgroupware-users] VFS and M$ issues, Chris Weiss, 2003/12/17
Re: [Phpgroupware-users] VFS and M$ issues, Benoit Hamet, 2003/12/18