Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

sEnte

PHP.ini a bloquear upload de ficheiros?

Recommended Posts

sEnte


;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 150M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

Esta

é a parte do meu PHP.ini referente ao upload de ficheiros

Estou a perguntar porque esta parte do meu script de upload de ficheiros não está a fazer o que devia


$file_name = $_FILES['image']['name'];
$file_ext = strtolower(end(explode('.', $file_name)));
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];


if (empty($errors)) {
  if (move_uploaded_file($file_tmp, 'images/' . $file_name)) {
echo 'File Uploaded';
  }
 } else {
  foreach ($errors as $error) {
echo $error, '<br />';
  }
 }

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

error_reporting(-1); e nada de erros


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

hmmmm

Strict Standards: Only variables should be passed by reference in /var/www/Secure_File_Upload/index.php on line 12

Warning: move_uploaded_file(images/image1.jpg): failed to open stream: Permission denied in /var/www/Secure_File_Upload/index.php on line 26

Warning: move_uploaded_file(): Unable to move '/tmp/phpCUevwT' to 'images/image1.jpg' in /var/www/Secure_File_Upload/index.php on line 26


$file_name = $_FILES['image']['name'];
[b]$file_ext = strtolower(end(explode('.', $file_name)));[/b] [i](linha12)[/i]
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];


if (empty($errors)) {
[b]   if (move_uploaded_file($file_tmp, 'images/' . $file_name)) {[/b] [i](linha 26)[/i]
echo 'File Uploaded';
  }
 } else {
  foreach ($errors as $error) {
echo $error, '<br />';
  }
 }

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
HappyHippyHippo

linha 12 :

$file_ext = explode('.', $file_name);
$file_ext = strtolower(end($file_ext)); // <-- end() recebe uma referência

linha 26:

- tens de dar permissões à pasta imagens/ para poder gravar o ficheiro


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
sEnte

Então dizes que se calhar convém partir isso em dois?

Então mas como tenho também não faz o mesmo?

Quanto às permissões ainda ando as voltas :S


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
HappyHippyHippo

Então dizes que se calhar convém partir isso em dois?

Então mas como tenho também não faz o mesmo?

se a função end recebe uma referência, não pode ser o valor de retorno de uma outra função

Quanto às permissões ainda ando as voltas :S

tens isso num servidor local ou tens algum FTP para enviar o site para o local onde está ?

qual o sistema operativo onde se encontra o site ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
sEnte

vou mudar então

Estou a usar Ubuntu. Já fiz "gksudo nautilus" e depois permissões para a pasta por defeito var/www

Dono: Eu

Acesso à pasta: criar e apagar ficheiros

Acesso ao ficheiro: aparece -- mas meti-lhe como Leitura e Escrita


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
HappyHippyHippo

- abre a consola

- navega até ao directório que contem o directório imagens/

- executa o seguinte comando:

sudo chmod 766 imagens


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
sEnte

fidbeck@fidbeck:~$ cd /var/www/Secure_File_Upload/

fidbeck@fidbeck:/var/www/Secure_File_Upload$ sudo chmod 766 images

sudo: /var/lib/sudo/fidbeck/1 writable by non-owner (0100666), should be mode 0600

[sudo] password for fidbeck:

fidbeck@fidbeck:/var/www/Secure_File_Upload$

Continua a dar permission denied

Problema resolvido

Estranhamente tive de mudar permissões para Outros:

No Dono e Grupo está acesso total

Para os Outros:

Acesso à pasta: Aceder aos ficheiros

Acesso a ficheiros: Ler e Escrever

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Agora não estou a usar Linux mas não me lembro de ter essa opção mas depois vejo.


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Então não sei.

Vou tirar um print das opções


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Vou tentar procurar isso.

Será o apache.conf?

Deve ser aqui...

sudo nano /etc/apache2/envvars

export APACHE_RUN_USER=www-data

export APACHE_RUN_GROUP=www-data

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

a pasta é var/www (por defeito)

mas depois como é? se atribuir ao www-data depois como crio ficheiros lá?

Posso por exemplo ser eu o dono e o grupo ser www-data? Ou simplesmente mudo o APACHE_RUN_USER para o meu nome?

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Então posso meter o Owner e group na pasta como sendo www-data


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Então posso meter o Owner e group na pasta como sendo www-data

EDIT: Meti o Dono e grupo para www-data e como é óbvio deixei de poder criar o que quer que seja lá.

Se calhar mais vale mudar as definições no /etc/apache2/envvars não?


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.