Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, tenho uma parte de um código em PHP que necessita realizar o seguinte comando DDL
create database nomedabase
, localmente funciona perfeitamente e o banco é criado.
O problema começa quando passo isso para a hospedagem, ela não permite a criação de um banco via PhpMyAdmin, apenas pelo CPANEL (testei na Ravehost e na Locaweb), e pelo que estou percebendo vai ser difícil encontrar uma hospedagem que me possibilite isso, porém esta é uma função primordial do sistema (não pode ser excluída).
Alguém tem alguma ideia de como contornar esse problema ?
Alguém tem alguma ideia de como resolver isso ?
Porque toda vez que um novo cliente se registra, deve ser criado um banco automaticamente com o apelido dele. Exemplo: joaozinho_bd
o DDL ficaria assim: create database joaozinho_bd
geralmente os planos de hospedagem tem um limite de bases q podem ser criadas, claro depende do plano.
Bom, o nosso plano não tem esse limite.
Algum dos seus usuários poderia ter permissão para isto, mas normalmente esta tarefa é possível apenas atravez do painel de controle. Em todo caso, reavalie esta "funcionalidade" do seu sistema, me parece errado.
Procure por serviços de dedicados ou VPS.
Paz e bem!
Um novo banco de dados só pode ser criado pelo usuário "root" ou outro usuário que tenha super privilégios, usando um usuário comum e sem privilégios você não vai conseguir criar.
Como você disse que está usando o painel cPanel e a sua conta permite a criação de novas bases de dados, você pode fazer isso usando a API.
Documentação da API /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />http://docs.cpanel.n...ApiIntroduction
Biblioteca em PHP para integração com a API /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />https://github.com/C...lInc/xmlapi-php
O iMasters também tem uma API para integração com o cPanel escrita pelo João Batista Neto /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />https://github.com/iMastersDev/cpanel
>
Como você disse que está usando o painel cPanel e a sua conta permite a criação de novas bases de dados, você pode fazer isso usando a API.
Se... a API estiver liberada. :)
>
Se... a API estiver liberada. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="smile.gif" />
Tem como desativar a API do cPanel? Eu nunca vi essa opção no painel do WHM.
O que eu sei é que se você for administrador do servidor ou tiver uma revenda (reseller) você pode gerar um hash no WHM e fazer a autenticação na API usando este hash, o que aumenta a segurança e evita problemas com trocas de senha. Já os usuários comuns, que apenas tem uma hospedagem no cPanel podem se autenticar na API usando o usuário e senha da conta.
A API do cPanel permite estas duas formas de autenticação.
Gente, tenho consciência que fazer isso é errado, criar um monte de banco de dados para cada usuário. Porém o cliente exigiu isso. Vou estudar a API do CPanel criado pelo João para ver o que consigo fazer.
Agora é descobrir como criar um banco de dados pela API
Pessoal, eu li todo o arquivo xmlapi.php e não encontrei nenhuma função que realiza a adição de banco de dados.
A classe xmlapi possui apenas métodos para funções mais comuns.
No caso de precisar de uma função mais específica, você deve utilizar o método xmlapi_query com base na documentação da API.
Qualquer dúvida posta aí. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="smile.gif" />
Bom, eu ainda estou um pouco perdido em como fazer isso. Um exemplo de utilização do método xmlapi_query com o banco de dados seria ótimo
Eu tava vendo umas aplicações aqui que integrei com o cPanel e lembrei que a API deles tem duas versões, a 1 e a 2.
Para usar a API 1 você usa o método api1_query e a API 2 o método api2_query.
Documentação do módulo MySQL usando a API 1 /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="seta.gif" />http://docs.cpanel.n...s/Api1/ApiMysql
Exemplo de uso do método:
$xmlapi->api1_query('seu_usuario_do_cpanel', 'Mysql', 'adddb', array('nome_do_db_que_deseja_criar'));
No primeiro parametro do método api1_query você coloca o seu usuário do cPanel, depois o nome do módulo da API (neste caso Mysql), depois o nome da função (no caso "adddb" para adicionar um novo banco de dados) e por último um array com os parâmetros a serem informados (no caso apenas o nome do banco de dados).
Obrigado Leonardo, vou testar e retorno aqui assim que possível.
Funcionou, muito obrigado pela ajuda !!
Por que você precisa tanto criar o banco de dados através do PHP?