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 <sheti(a)furtails.ru> 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).