Hi, mr. All!

When i installed MW-1.19.1 on my hosting i got error messages like

'rename() [function.rename
<http://fwiki.whitefossa.ru/index.php/function.rename>]: SAFE MODE
Restriction in effect. The script whose uid is 55398 is not allowed to
access /var/tmp owned by uid 0 in
*/home/u48601/whitefossaru/fwiki/includes/upload/UploadStash.php* on
line *173*'

when trying to upload any image.

Safe mode was turned OFF, but this error didn't disappear.

Investigations, made by me and Sir. Sheti <[email protected]> revealed, that my 
hoster is completely moron. He uses one tempdir /var/tmp for all users of server, 
and, this directory belongs to root:root. Because it any modification in this 
directory fails. And, hoster don't allow to change this directory.

So, here is dirty workaround by Sheti:

1) Create temp directory in filesystem, accessible by you, than chmod -R 777 it

2) Locate file <mediawiki_dir>/includes/GlobalFunctions.php

3) Find function named 'wfTempDir()' and comment it (this function determines 
temp directory):

 //Hoster are idiot, we must make temp yourself
 /*
function wfTempDir() {
        foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
                $tmp = getenv( $var );
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && 
is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
        if( function_exists( 'sys_get_temp_dir' ) ) {
                return sys_get_temp_dir();
        }
        # Usual defaults
        return wfIsWindows() ? 'C:\Windows\Temp' : '/tmp';
}
*/

Than add new version of function:

//BEGIN PATCH
function wfTempDir() {
  return '/home/u48601/whitefossaru/fwiki/temp'; //!!!! << FULL PATH TO YOUR 
TEMP MUST GO HERE !!!!
}
//END PATCH

4) Save file and locate <mediawiki_dir>/includes/uploads/UploadStash.php
5) Find function 'stashFile' and lines

if ( ! preg_match( "/\\.\\Q$extension\\E$/", $path ) ) {
            $pathWithGoodExtension = "$path.$extension";

in it.

Comment out this lines.

Place between commented lines and 'if ( ! rename( $path, $pathWithGoodExtension ) ) {' next code:

            //BEGIN PATCH
//For moron hosters, who do not allow to work with file in tmp directory
            if ( ! preg_match( "/\\.\\Q$extension\\E$/", $path ) ) {
            $file_basename = basename($path);
$pathWithGoodExtension = wfTempDir().'/'.$file_basename.$extension;
            //END PATCH

This code will move uploaded file into our temp.

6) Enjoy. It's working, but it's very dirty!
7) Write you hoster testimonial email.

P.s. My hoster is Majordomo (Majordomo.ru, Russia).


_______________________________________________
MediaWiki-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to