[drupal-devel] [bug] file_check_location is not working on Windows 2000

ec drupal-devel at drupal.org
Sun May 15 20:19:48 UTC 2005


Issue status update for http://drupal.org/node/10885

 Project:      Drupal
 Version:      cvs
 Component:    file system
 Category:     bug reports
 Priority:     critical
 Assigned to:  Anonymous
 Reported by:  ccourtne
 Updated by:   ec
 Status:       patch

On my linux box, I make an other test with the latest stock release of
file.inc. I setup files directectory, with "private" check, outside
drupal root and drupal complains  The directory does not exist  (I
know this directory exists and is working because I'm using it !). It
only works with the patch below. Sorry, I'm not confortable enought to
answer your question Dries, but sure this patch is the only I found to
have a real private directory working. Regards, eric.


PS : I don't why but got an error each time I want to upload a file
here ??? so here is the text against the latest release of file.inc i.e
1.39.2.2



--- ./file.inc	2005-05-15 21:52:40.758531811 +0200
+++ ./file_mod_ec.inc	2005-05-15 22:03:41.869608738 +0200
@@ -169,7 +169,7 @@
  * @return 0 for invalid path or the real path of the source.
  */
 function file_check_location($source, $directory = 0) {
-  $source = realpath($source);
+  $source = realpath(dirname($source));
   $directory = realpath($directory);
   if ($directory && strpos($source, $directory) !== 0) {
     return 0;
>/code>




ec



Previous comments:
------------------------------------------------------------------------

September 16, 2004 - 14:46 : ccourtne

Currently file_check_location is always returning false when passed a
file as the $source path.  If a directory is passed in $soruce
file_check_location works.  I've tracked this down to realpath
returning an empty string when passed a relative path which points to a
file.  This probably goes unnoticed if you are using the file.api's to
construct relative paths to the druapl file directory since
check_location failing just causes the durpal file directory to get
added which is what you wanted in the first place.


Replacing this line
  $source = realpath(dirname($source));
with this
  $source = realpath(dirname($source));
fixes it on my windows box using PHP 4.3.8.


I don't have things set up to do patches on my windows boxes here at
work yet.  I'll submit a formal patch tonight.




------------------------------------------------------------------------

September 16, 2004 - 14:47 : ccourtne

Dag nabit.


Replace
  $source = realpath($source);
with
  $source = realpath(dirname($source));


Craig




------------------------------------------------------------------------

September 16, 2004 - 14:56 : Anonymous

Attachment: http://drupal.org/files/issues/file-inc-file_check_location.patch (639 bytes)

The sooner there are patches, the better it is...


I tested this approach on my server and it works.


Steef




------------------------------------------------------------------------

September 17, 2004 - 02:34 : ccourtne

Attachment: http://drupal.org/files/issues/checklocation.patch (666 bytes)

Here is the patch.




------------------------------------------------------------------------

February 23, 2005 - 01:30 : dan90 at drupal.org

This also fixed my file upload problems with some nonstandard paths
under Linux/apache, php 4.3.4 drupal 4.5.2. maybe we should remove
mention of windows 2000?




------------------------------------------------------------------------

March 1, 2005 - 18:32 : killes at www.drop.org

Still applies.




------------------------------------------------------------------------

April 18, 2005 - 12:10 : ec

Is this patch still to be use with actual Drupal 4.6.0 ? Thanks. eric




------------------------------------------------------------------------

May 7, 2005 - 11:35 : Wes Cowley

I hand applied the patch to my Linux based installation and it solved
the problem I was having with filemanager/attachment.  I assume it
would fix the same problem I had with upload.module since the symptoms
were identical.




------------------------------------------------------------------------

May 7, 2005 - 11:36 : Wes Cowley

Meant to add, that was a 4.6.0 Linux installaion that this patch cleared
up.




------------------------------------------------------------------------

May 14, 2005 - 08:59 : larryjhs

Thanks, still, I'm a bit of a php newbie -- where do I put the patch --
into which bit of script?  If it's not too obvious, tell me and I won't
try!  But if it's obvious, please give me the location


L




------------------------------------------------------------------------

May 14, 2005 - 09:19 : ec

This patch seem still to apply to 4.6 (I'm using it on my linux box too
and it solve my problem with upload.module) it apply on "file.inc" that
you will find in includes directory on top of your drupal root. Put the
patch in the same directory as file.inc go in this directory too and
apply the patch like this "patch -p0 < the_patch_to_apply" where patch
is the command on *nix box. If you're not confortable you can either
edit the file.inc by hand and make the change yourself, in the patch
file, line beginning with "-" is the one to remove, line beginning with
"+" is the one to add, other lines are the context so you're sure to
find the right line. Hope this help. Regards.




------------------------------------------------------------------------

May 14, 2005 - 09:23 : ec

BTW, IMHO this patch should be committed ASAP as it's solve the problem
with upload.module that can't handle private directory outside drupal
root. Tested on my sites ans work (for now ;-) like a charm. Regards.




------------------------------------------------------------------------

May 15, 2005 - 12:51 : Dries

Don't we use file_create_path for that (it appends the 'files'-bit)?







More information about the drupal-devel mailing list