xaboto Posted April 22, 2015 at 10:49 AM Report Share #581629 Posted April 22, 2015 at 10:49 AM (edited) Boas, primeiro que tudo sou um principiante em programação pelo que peço desculpa se utilizar algum termo incorretamente. O meu ficheiro php é chamado a partir do action de um form onde o utilizador introduz o nome da categoria que quer criar. Este ficheiro permite duas coisas: a criação de uma pasta com o nome da categoria e a introdução na base de dados se a pasta for criada com sucesso no servidor. Neste momento encontro-me neste primeiro ponto e com um problema. O ficheiro php: <?php $NomeCategoria= $POST['NomeCategoria']; include 'ligarbd.php'; if(chdir('img/produtos')){ mkdir($NomeCategoria, 0777); } else { echo'Não foi possível a mudança para o diretório pedido'; } ?> Ele está a ser corretamente chamado do form e entra bem na pasta img/produtos (pus la um echo pa confirmar) e ate pus um diretorio errado pa ver se ia para o else. O problema agora é que ele não está a criar a pasta. Não sei o que estou a fazer de errado (algo terá de ser). Até ja estou a manda -lo para dentro da pasta produtos para não haver problemas na criação de pastas dentro de umas ja existentes porque pelo que pesquisei isso da alguns problemas e depois também tem de se ter atenção com o mod ou seja tem de se mudar (chmod()) qualquer coisa do genero. E é por isso que aqui estou se alguem me poder ajudar agradecia imenso 👍 Edited April 22, 2015 at 02:37 PM by xaboto Link to comment Share on other sites More sharing options...
chbcl Posted April 22, 2015 at 02:38 PM Report Share #581642 Posted April 22, 2015 at 02:38 PM Estás a usar Ubuntu? O diretório onde queres fazer o mkdir tem permissão de criação e escrita? developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
xaboto Posted April 22, 2015 at 03:10 PM Author Report Share #581649 Posted April 22, 2015 at 03:10 PM (edited) Estás a usar Ubuntu? O diretório onde queres fazer o mkdir tem permissão de criação e escrita? O site está alojado num servidor gratuito (byethost) e acedo a ele para por lá ficheiros atraves do FileZilla e não sei que OS usa, mas vou tentar saber. Quanto às permissoes também não sei mas pelo que percebi o parametro 0777 que se mete na função mkdir dá todas as permiçoes (vi aqui). Mas já fiz alguns progressos. Adicionei o parametro true (que no site da w3schools diz que é opcional) e em vez da variavel escrevi: "nomedapasta" e deu a pasta foi criada mas nao sei porque demorou uns longos minutos. Será de eu usar o FileZilla? EDIT: Usa Linux Edited April 22, 2015 at 03:22 PM by xaboto Link to comment Share on other sites More sharing options...
jpcarvalho1992 Posted April 22, 2015 at 03:13 PM Report Share #581651 Posted April 22, 2015 at 03:13 PM Consegues meter aqui um print? Penso que já sei qual o teu problema. Pode ser também da band do host. Link to comment Share on other sites More sharing options...
xaboto Posted April 22, 2015 at 03:17 PM Author Report Share #581652 Posted April 22, 2015 at 03:17 PM (edited) Consegues meter aqui um print? Penso que já sei qual o teu problema. Pode ser também da band do host. desculpa a ignorancia, mas um print do que? EDIT: Será isto? Edited April 22, 2015 at 03:25 PM by xaboto Link to comment Share on other sites More sharing options...
chbcl Posted April 22, 2015 at 03:23 PM Report Share #581653 Posted April 22, 2015 at 03:23 PM Já sei qual é o problema, está mesmo onde pensava. quando fazes isto: mkdir($NomeCategoria, 0777); estás a dizer para criar um diretório com o nome que estiver na variável e que esse diretório vai ter a permissão 0777 mas se o diretório onde esse diretório vai ser criado não tem a permissão ele não deixa o PHP executar esse comando... Estás a ligar-te ao servidor por FTP? clica com o lado direito do rato no diretório onde queres criar as pastas e procura por permissões e mete 777 e já vai dar 🙂 PS: Quando queres saber as informações do servidor basta escreveres num ficheiro php: <?php phpinfo(); ?> developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
jpcarvalho1992 Posted April 22, 2015 at 03:27 PM Report Share #581654 Posted April 22, 2015 at 03:27 PM Tudo dito pelo meu colega... 🙂 Caso algum problema, aqui estou. Link to comment Share on other sites More sharing options...
xaboto Posted April 22, 2015 at 04:33 PM Author Report Share #581661 Posted April 22, 2015 at 04:33 PM (edited) Já sei qual é o problema, está mesmo onde pensava. quando fazes isto: mkdir($NomeCategoria, 0777); estás a dizer para criar um diretório com o nome que estiver na variável e que esse diretório vai ter a permissão 0777 mas se o diretório onde esse diretório vai ser criado não tem a permissão ele não deixa o PHP executar esse comando... Estás a ligar-te ao servidor por FTP? clica com o lado direito do rato no diretório onde queres criar as pastas e procura por permissões e mete 777 e já vai dar 🙂 PS: Quando queres saber as informações do servidor basta escreveres num ficheiro php: <?php phpinfo(); ?> Fui ao fileZilla e mudei entao as permissoes das pastas para 0777, mas continua a não dar :S Vou voltar a rever tudo, o erro provavelmente é algo mais basico. Um à parte: Eu tenho outro form que serve para fazer upload de imagens que neste momento mete-as no mesmo sitio onde estou a tentar criar as pastas e o que é estranho é que sem a permissao de escrita consegui mandar para la imagens aqui esta esse ficheiro de upload de imagem: $target_dir = "img/produtos/"; $target_file = $target_dir . basename($_FILES["uploadFile"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["uploadFile"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // Check if file already exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Check file size if ($_FILES["uploadFile"]["size"] > 1000000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // if everything is ok, try to upload file } else { if (move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $target_file)) { echo "The file ". basename( $_FILES["uploadFile"]["name"]). " has been uploaded."; echo' '; $directories = glob($somePath="img/produtos" . '/*' , GLOB_ONLYDIR); print_r ($directories); } else { echo "Sorry, there was an error uploading your file."; } } ?> Edited April 22, 2015 at 04:39 PM by xaboto Link to comment Share on other sites More sharing options...
chbcl Posted April 22, 2015 at 07:30 PM Report Share #581667 Posted April 22, 2015 at 07:30 PM experiementa mkdir("dietorio-teste",0777); se nao der experimenta mkdir("diretorio-teste",777); developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 22, 2015 at 08:07 PM Report Share #581671 Posted April 22, 2015 at 08:07 PM a página não te apresenta nenhuma mensagem de erro ? tens os erros a serem apresentados ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
chbcl Posted April 22, 2015 at 10:22 PM Report Share #581677 Posted April 22, 2015 at 10:22 PM no ficheiro que fazes o mkdir() escreve: error_reporting(E_ALL); ini_set('display_errors', 1); developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
MROverclock Posted April 23, 2015 at 08:39 AM Report Share #581687 Posted April 23, 2015 at 08:39 AM Atenção: O utilizador com que se acede ao FTP não é o mesmo que é usado pelo PHP, por isso é que se deres permissões pelo FTP, pode não afetar o PHP! Link to comment Share on other sites More sharing options...
chbcl Posted April 23, 2015 at 09:20 AM Report Share #581690 Posted April 23, 2015 at 09:20 AM Atenção: O utilizador com que se acede ao FTP não é o mesmo que é usado pelo PHP, por isso é que se deres permissões pelo FTP, pode não afetar o PHP! será? developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 23, 2015 at 10:06 AM Report Share #581693 Posted April 23, 2015 at 10:06 AM Atenção: O utilizador com que se acede ao FTP não é o mesmo que é usado pelo PHP, por isso é que se deres permissões pelo FTP, pode não afetar o PHP! essa afirmação denota que não conpreende o sistema de permissões de uma sistema unix ... examinando o valor 777 - primeiro de tudo, o valor 7 representa uma mascara de bits para : leitura, escrita e execução do ficheiro (111 em binário = 7 decimal) - o primeiro valor representa estes níveis de acesso para o utilizador dono do ficheiro - o segundo valor representa estes níveis de acesso para utilizadores associados ao grupo atribuido ao ficheiro - o terceiro valor representa estes níveis de acesso a nível global. por outras palavras, seja o utilizador FTP ou o utilizador BATATAS, so o modo de permissões é 777 toda a gente tem permissões de escrita, leitura e execução do ficheiro IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
chbcl Posted April 23, 2015 at 01:49 PM Report Share #581716 Posted April 23, 2015 at 01:49 PM essa afirmação denota que não conpreende o sistema de permissões de uma sistema unix ... examinando o valor 777 - primeiro de tudo, o valor 7 representa uma mascara de bits para : leitura, escrita e execução do ficheiro (111 em binário = 7 decimal) - o primeiro valor representa estes níveis de acesso para o utilizador dono do ficheiro - o segundo valor representa estes níveis de acesso para utilizadores associados ao grupo atribuido ao ficheiro - o terceiro valor representa estes níveis de acesso a nível global. por outras palavras, seja o utilizador FTP ou o utilizador BATATAS, so o modo de permissões é 777 toda a gente tem permissões de escrita, leitura e execução do ficheiro É essa a teoria que eu defendo, por isso e visto todas as respostas do autor do tópico, das duas 1: Ou alterou as permissões da pasta errada Ou a variável que está a enviar o nome do diretório a ser criado não está a funcionar corretamente developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
xaboto Posted April 27, 2015 at 05:05 PM Author Report Share #581950 Posted April 27, 2015 at 05:05 PM (edited) Boas, tenho o ficheiro assim neste momento e está a funcionar, mas por vezes demora imenso tempo a criar a pasta. $NomeCategoria= $POST['NomeCategoria']; include 'ligarbd.php'; if(chdir('img/produtos')){ mkdir("diretorioteste", 0777); header ('Location:index.php'); } else { echo'Não foi possível a mudança para o diretório pedido'; } error_reporting(E_ALL); ini_set('display_errors', 1); ?> Agora se substituir o "diretorioteste" pela variavel $NomeCategoria nao funciona, alguma sugestão? Edited April 27, 2015 at 05:06 PM by xaboto Link to comment Share on other sites More sharing options...
capesone Posted April 27, 2015 at 07:29 PM Report Share #581973 Posted April 27, 2015 at 07:29 PM Penso que seja de $POST['NomeCategoria']; tenta trocar por $_POST['NomeCategoria']; Link to comment Share on other sites More sharing options...
chbcl Posted April 27, 2015 at 09:18 PM Report Share #581992 Posted April 27, 2015 at 09:18 PM Penso que seja de $POST['NomeCategoria']; tenta trocar por $_POST['NomeCategoria']; Ok, agora até eu fiquei com uma dúvida, se me sinto envergonhado por não ter reparado nisso ou se simplesmente não o vi porque ninguém erra isso developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 27, 2015 at 10:25 PM Report Share #582003 Posted April 27, 2015 at 10:25 PM Ok, agora até eu fiquei com uma dúvida, se me sinto envergonhado por não ter reparado nisso ou se simplesmente não o vi porque ninguém erra isso eu nunca abro secções "spoilers" ... se é para apresentar código, existe elementos para os apresentar ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
xaboto Posted April 28, 2015 at 08:14 AM Author Report Share #582028 Posted April 28, 2015 at 08:14 AM Penso que seja de $POST['NomeCategoria']; tenta trocar por $_POST['NomeCategoria']; É mesmo isso já está a funcionar muito obrigado 👍 Ok, agora até eu fiquei com uma dúvida, se me sinto envergonhado por não ter reparado nisso ou se simplesmente não o vi porque ninguém erra isso Eu avisei logo de inicio que poderia utilizar algum termo incorretamente, mas nao te sintas culpado o amador aqui sou eu 😕 eu nunca abro secções "spoilers" ... se é para apresentar código, existe elementos para os apresentar ... Eu também uso os spoilers por uma questão de apresentação acho que o topico fica um pouco mais arrumado, mas vou comçar a usa-los so para o seu devido objetivo. E mais uma vez quero-vos agradecer pelo tempo que vos fiz perder, mas teve de ser porque eu sozinho não ia lá de certeza absoluta 😄 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now