[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