
Sim, estou sumido estes dias.
Baixei o Drupal 5.1 para conhecê-lo um pouco e estudar a possibilidade de implantá-lo no meu novo projeto.
Porém, não foi possível mudar as cores do tema padrão para um esquema de minha preferência, porque o maldito SAFE MODE do meu servidor não está desligado, ou seja: as informações da cor selecionada são salvas em uma pasta do Drupal (especificamente /files/color) através do comando UNIX mkdir, o que torna o usuário detentor da pasta o próprio APACHE. Então, quando o SAFE MODE compara a UID do dono da pasta com a UID do script do Drupal e elas não batem, ele “barra” qualquer alteração da pasta (nem eu mesmo posso alterar). Daí, quando tento mudar as cores e o sistema tenta salvar os dados, este erro de identidade não possibilita que a modificação seja efetuada.
Escarafunchando os códigos do Drupal, encontrei o módulo COLOR, que é responsável pelas alterações de cor do tema em questão. E lá estava todo o problema: o mkdir. O script usa este comando para criar a pasta dentro do Drupal. Então, qual alternativa usar para mudar o meu tema, de acordo com o meu gosto?
Pulei para uma alternativa suja: Mudar o mkdir para uma conexão FTP, de forma que a pasta seja criada via FTP (como um usuário), e não com o comando UNIX.
O primeiro passo foi criar um usuário via CPanel que tenha acesso somente à pasta /files/color da minha instalação do Drupal (não esquecendo de dar CHMOD 777 a ela).
Depois, alterei o código do arquivo color.module na pasta do módulo COLOR: onde há
// Prepare target locations for generated files
$id = $theme .’-’. substr(md5(serialize($palette) . microtime()), 0, 8);
$paths['color'] = variable_get(‘file_directory_path’, ‘files’) .’/color’;
$paths['target'] = $paths['color'] .’/’. $id;
foreach ($paths as $path) {
if (!is_dir($path)) {
mkdir($path);
}
mudei para
// Prepare target locations for generated files
$id = $theme .’-’. substr(md5(serialize($palette) . microtime()), 0, 8);
$paths['color'] = variable_get(‘file_directory_path’, ‘files’) .’/color’;
$paths['target'] = $paths['color'] .’/’. $id;
foreach ($paths as $path) {
if (!is_dir($path)) {
function CriaFTP($newDir) {
$server = ‘ftp.servidor.com’; // Endereço FTP do seu servidor
$connection = ftp_connect($server); // Faz a Conexão
// Logando
$user = “username@yourserver.com”; //Usuário recém-criado
$pass = “yourpassword”; //senha
$result = ftp_login($connection, $user, $pass);
// Tem conexão?
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
if(ftp_mkdir($connection, $newDir)) { // cria a pasta!
ftp_site($connection, “CHMOD 777 $newDir”) or die(“FTP SITE CMD failed.”); // dá permissões para a pasta recém-criada
return $newDir;
} else {
return false;
}
ftp_close($connection); // Fecha a conexão
}
}
CriaFTP($id); // Cria a pasta de acordo com o script, via FTP
// mkdir($path);
}
Pronto. Simples assim. Um truquezinho útil para scripts que usam o mkdir para criar suas pastas, e customizável de acordo com as necessidades.
Não precisa mais perder tempo solicitando ao seu servidor que desligue o SAFE MODE: dê seu jeito. Agora, tudo está indo muito bem, e minha fase de customização do Drupal (é, se você não sabe, o Meio Bit usa este CMS) deu-se início, finalmente. Aguardem por novidades, boas por sinal.
Ah, sim. Eu copiei este artigo descaradamente daqui. Só não avisem ao autor.