domingo, 29 de março de 2009

Upload de arquivos com PHP e Safemode Habilitado (safemode=on)



A maioria dos hostings compartilhados utilizam a diretiva safemode=on na configuração do php.ini. Isso restringe o desenvolvedor a utilizar funções que tem potencial de colocar o sistema em risco. Um função muito utilizada pelos scripts de upload é a move_uploaded_file() e mkdir() quando necessario, porém temos alguns problemas:

Warning: mkdir(/www/docs/dir/) [function.mkdir]: Permission denied in (...)
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move (...)


Um alternativa completa para uploads de arquivos via php é utilizar a função FTP.

Enviando um arquivo:


<?php

$ftp_server = '200.195.111.2';

$ftp_user_name = 'manager';

$ftp_user_pass = 'sd298sample1';

$file = 'file1.txt';

$remote_file = 'readme.txt';

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {

echo "Arquivo enviado com sucesso $file\n";

} else {

echo "Erro ao enviar $file\n";

}

ftp_close($conn_id);

?>



Criando um diretório:

<?php

$ftp_server = '200.195.111.2';

$ftp_user_name = 'manager';

$ftp_user_pass = 'sd298sample1';

$dir = 'www';

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_mkdir($conn_id, $dir)) {

echo "Dir criado com êxito: $dir\n";

} else {

echo "Erro ao criar a pasta $dir\n";

}

ftp_close($conn_id);
?>


Espero ter ajudado. Boa sorte.

4 comentários:

Giu disse...
Esta postagem foi removida pelo autor.
Giu disse...

E esses dados de ftp posso usar tb?!?!?

xD

Ta bacana o blog hein!

Giuseppe

Anônimo disse...

trtrtretrter

Zaqueu disse...

Ainda não tive tempo de testar, mas acho que este post vai resolver meu problema.
valeu msm.

Postar um comentário