oversight 0 Denunciar post Postado Dezembro 14, 2010 Amigos, Está funcionando localmente um sistema web onde faço o upload de imagens. 1 -Este sistema cria dinâmicamente as pastas para cada categoria de produtos e as imagens são colocadas dentro de sua respectiva pasta. Acontece que no servidor linux as pastas são criadas com permissão 341 e o upload das imagens da erro. Andei pesquisando e tomei conhecimento que o servidor linux toma como dono ( owner ) as pastas criadas pelo PHP. Como as pastas serão criadas dinamicamente, não há condição de ficar alterando as permissões manualmente. Alguém sabe como resolver isso? ===================================================================================================================== 2- Outra dúvida é que no mesmo sistema o usuário incluirá logomarcas para cada uma de suas representadas em uma pasta específica, previamente criada e com permissões 0777. No servidor linux não consigo fazer o upload das imagens e também não recebo nenhuma mensagem de erro. Utilizava o comando copy e passei para move_upload_file, mas sem sucesso. Se puderem ajudar... Compartilhar este post Link para o post Compartilhar em outros sites
Denis_Uyeda 0 Denunciar post Postado Dezembro 14, 2010 Olá! Então, eu não cheguei a testar isso mas, você já deu uma olhada no seu php.ini, pra ver se ele está permitindo uploads? Procure por "File Uploads", lá tem uma série de coisas sobre uploads. Compartilhar este post Link para o post Compartilhar em outros sites
Kabbalista 0 Denunciar post Postado Dezembro 14, 2010 Tente usar a função chmod: http://br2.php.net/manual/en/function.chmod.php Lembrando que o valor deve ser passado à função chmod em octal. Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 14, 2010 É exatamente o que estou fazendo! Localmente funciona, mas no servidor a permissão chega como 341 e não envia os arquivos. O que pode ser? if(!file_exists("$produtos/$id")) { if (mkdir("$produtos/$id", 0777)) ==>> aqui chega com permissão 341 { if (move_uploaded_file($fileLogo, "$url" . $nomeLogo . ".jpg")) ==> não envia imagem mesmo com pasta já criada e com permissão 0777 { blábláblá } } } Pessoal, Vejam o que andei lendo: "Quando o safe-mode está ativo, o PHP verifica se o(s) arquivo(s) e/ou diretório(s) que serão afetados por esta operação tem o mesmo UID (proprietário) do script que está sendo executado. Isso é um problema crônico principalmente em servidores compartilhado onde os varios usuários executam scripts no apache. Os efeitos colaterais dessa configuração é geralmente nas ferramentas de gravação de arquivos no servidor atraves de uploads, porque normalmente essas ferramentas usa am a função copy() e/ou a função move_upload_file() que fica bloqueada ao UIN do usuario que executa o php. Ou seja se o php.ini não estiver bem configurado ambas poderam não funcionar. Fonte: http://www.linhadecodigo.com.br/artigo/1090/safe-modemodo-seguro-no-php.aspx Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 14, 2010 seu servidor deixa o safe_mode em on? quanto ao upload sem sucesso, você pode ver o código do erro em $_FILES['nome_do_campo']['error']: http://www.php.net/manual/en/features.file-upload.errors.php Compartilhar este post Link para o post Compartilhar em outros sites
Kabbalista 0 Denunciar post Postado Dezembro 15, 2010 Mesmo dando mkdir com as permissões corretas, tente, logo após a função mkdir, usar chmod para alterar as permissões. Vide aqui: http://forum.imasters.com.br/index.php?/topic/417880-criar-pasta-com-777/ Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 15, 2010 O safe mode está "on". Agradeço pelas sugestões mas já tinha visto o tópico, testei e não deu certo. Continua criando as pastas mas pelo menos agora apresenta erro dizendo que o script PHP foi executado por usuário diferente do proprietário das pastas. if(!file_exists("$produtos/$pasta")) { if (mkdir("$produtos/$pasta", 0777, true)) { ==> chmod("$produtos/$pasta", 0777); <== if (move_uploaded_file($fileLogo, "$url" . "$nomeLogo" . ".jpg")) { ... } } } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 15, 2010 O Apache/PHP deveria estar rodando com seu usário, mas o servidor deve ter configurado errado e estão com usuários diferentes. Porém, uma simples busca no google me retornou, dentre outros resulatdos, isto: http://forum.imasters.com.br/index.php?/topic/151216-upload-de-arquivos-com-safe-modeon/ veja se resolve. PS: mude de servidor ou use o suporte para informar o problema Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 16, 2010 O Apache/PHP deveria estar rodando com seu usário, mas o servidor deve ter configurado errado e estão com usuários diferentes. Porém, uma simples busca no google me retornou, dentre outros resulatdos, isto: http://forum.imasters.com.br/index.php?/topic/151216-upload-de-arquivos-com-safe-modeon/ veja se resolve. PS: mude de servidor ou use o suporte para informar o problema Beraldo, Não é que o servidor esteja configurado errado. Acontece que no linux os scripts php tem como proprietários o próprio SO. Quando tentamos executá-los o linux nos informa ( caso safe mode esteja "ON" ) que não podemos realizar aquela operação pois somente o proprietário tem poderes para tanto. Este é o dilema de como fazer upload em php para servidores linux. Caso alguém saiba de mais algum detalhe que possa ajuda, poste-o por favor! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 16, 2010 Não é que o servidor esteja configurado errado. Acontece que no linux os scripts php tem como proprietários o próprio SO. Quando tentamos executá-los o linux nos informa ( caso safe mode esteja "ON" ) que não podemos realizar aquela operação pois somente o proprietário tem poderes para tanto. Mas para isso existe o modo de execução suExec. O Apache passa a rodar como root e muda de usuário conforme o dono do script em execução. Assim, cada thread do Apache roda com seu respectivo usuário. Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 17, 2010 Não é que o servidor esteja configurado errado. Acontece que no linux os scripts php tem como proprietários o próprio SO. Quando tentamos executá-los o linux nos informa ( caso safe mode esteja "ON" ) que não podemos realizar aquela operação pois somente o proprietário tem poderes para tanto. Mas para isso existe o modo de execução suExec. O Apache passa a rodar como root e muda de usuário conforme o dono do script em execução. Assim, cada thread do Apache roda com seu respectivo usuário. O suporte de meu servidor não está cooperando muito, então nem vou procurá-los mais. Acredito que descobri o que pode estar bloqueando meus uploads... Caso se confirmem minhas suspeitas, postarei aqui para que todos os que tentaram ajudar, e outros que tenham a mesma dúvida possam tomar conhecimento. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 17, 2010 o link com o código que postei no [anchorlink=1646063]post #8[/anchorlink] não funcionou? Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 18, 2010 o link com o código que postei no [anchorlink=1646063]post #8[/anchorlink] não funcionou? Beraldo, Não testei aquele código. Veja: Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 10086 is not allowed to access /home/httpd/vhosts/xxx logomarcas owned by uid 48 in /home/httpd/vhosts/xxx.php on line 59 Warning: mkdir() [function.mkdir]: SAFE MODE Restriction in effect. The script whose uid is 10086 is not allowed to access /home/httpd/vhosts/xxx owned by uid 48 in /home/httpd/vhosts/xxx.php on line 75 Warning: chmod() [function.chmod]: Unable to access produtos/186/ in /home/httpd/vhosts/xxx.php on line 76 Warning: chmod() [function.chmod]: SAFE MODE Restriction in effect. The script whose uid is 10086 is not allowed to access /home/httpd/vhosts/xxx owned by uid 48 in /home/httpd/vhosts/xxx.php on line 76 Warning: chmod() [function.chmod]: stat failed for produtos/186/ in /home/httpd/vhosts/xxx.php on line 76 Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 20, 2010 Todos os uploads serão feitos para a pasta "produtos", certo ? A pasta "produtos" está com permissão de escrita ? Compartilhar este post Link para o post Compartilhar em outros sites
oversight 0 Denunciar post Postado Dezembro 20, 2010 Todos os uploads serão feitos para a pasta "produtos", certo ? A pasta "produtos" está com permissão de escrita ? Sim hinom, Estão sendo criadas dinamicamente com permissao 0777. Compartilhar este post Link para o post Compartilhar em outros sites