Ir para o conteúdo
sEnte

PHP.ini a bloquear upload de ficheiros?

Mensagens Recomendadas

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 />';
  }
 }

Editado por sEnte

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 />';
  }
 }

Editado por sEnte

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por sEnte

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por sEnte

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Editado por sEnte

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Apenas se não tiveres o HTTP aberto ao exterior (e.g. outras pessoas conseguirem aceder ao apache por HTTP), caso contrário expões-te a problemas. Se o owner dessas pastas não for o do apache, quem aceder a essa pasta tem também acesso às outras pastas do sistema.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.