Component installeren lukt niet (unable to create directory) -> Fix

Afdrukken PDF
Geschreven door op zaterdag 05 april 2008 00:15, in: FAQ (1.0.x)

Probleem: Na een PHP update van de hosting provider kunt u geen componenten meer installeren.
Meestal gaat het hierbij om de combinatie van PHP 5.2.4 en Safe Mode = On.

U kunt natuurlijk teruggaan naar PHP4, dit is echter niet nodig met de volgende fix:

Maak voor de zekerheid altijd eerst een backup van het bestand dat u gaat bewerken!

Open het bestand administrator\includes\admin.php.
Op regel 258 begint de sectie mosMakePath, daarin vindt u op regel 288 de volgende code:

if ($n < 1) {

Wijzig dit in:

if (($n < 1) || ($path == '')) {

De complete sectie komt er nu als volgt uit te zien:

function mosMakePath($base, $path='', $mode = NULL) {
global $mosConfig_dirperms;

// convert windows paths
$path = str_replace( '\\', '/', $path );
$path = str_replace( '//', '/', $path );

// check if dir exists
if (file_exists( $base . $path )) return true;

// set mode
$origmask = NULL;
if (isset($mode)) {
$origmask = @umask(0);
} else {
if ($mosConfig_dirperms=='') {
// rely on umask
$mode = 0777;
} else {
$origmask = @umask(0);
$mode = octdec($mosConfig_dirperms);
} // if
} // if

$parts = explode( '/', $path );
$n = count( $parts );
$ret = true;
if (($n < 1) || ($path == '')) {
if (substr( $base, -1, 1 ) == '/') {
$base = substr( $base, 0, -1 );
}
$ret = @mkdir($base, $mode);
} else {
$path = $base;
for ($i = 0; $i < $n; $i++) {
$path .= $parts[$i] . '/';
if (!file_exists( $path )) {
if (!@mkdir(substr($path,0,-1),$mode)) {
$ret = false;
break;
}
}
}
}
if (isset($origmask)) {
@umask($origmask);
}

return $ret;
}

Het bewerken van bestanden is voor eigen risico. JoomlaCommunity kan niet aansprakelijk worden gesteld voor eventuele schade aan uw website.