Skip to end of metadata
Go to start of metadata


A funcionalidade de Deploys no PhpStorm é um poderoso jeito de transferir arquivos entre projeto e servidor de deploy. Mas e se algo acontecer de errado? É bom antes assegurar-se de que os tutoriais de deploy foram seguidos, mas e se ainda assim não funcionar para você? Nesse tutorial iremos explorar alguns dos problemas mais comuns e suas soluções, assim como outros cenários interessantes. Considere esta página como um "Perguntas mais frequentes" ou FAQ para deploys no PhpStorm.


Resolução de problemas gerais

Como coletar os logs do deploy e mandá-los aos engenheiros de suporte da JetBrains?

Se a resposta para seu problema de deploy não estiver nessa página, você pode contactar nosso suporte. Eles podem precisar que você tenha os logs de operação à mão. Se este for o caso, siga as instruções em collect deployment logs (em inglês).

 Mostrando as instruções aqui...

Se sua versão do PhpStorm for de 7.1.3 e acima:

1. Abra pelo menu Help → Configure Debug Log Settings

2. Adicione as seguintes linhas:

  • Problemas com depuração de PHP: com.jetbrains.php.debug
  • Problemas com deploys ou sincronização: com.jetbrains.plugins.webDeployment

3. Clique em OK
4. Reproduza o problema.
5. Os arquivos de log estarão em:

  • No próprio PhpStorm:
    • Windows ou Linux: Help → Show Log in Explorer
    • Mac OS X: Help → Show Log in Finder
  • Manualmente (~ significa o diretório home do usuário):
    • Windows e Linux: ~\.WebIde<numero referente a versão>\system\log
    • Mac OS X: ~/Library/Logs/WebIde<numero referente a versão>

O ultimo arquivo de log é nomeado como idea.log; arquivos mais antigos terminam com um número, por exemplo idea.log.1, idea.log.2 etc. Na maioria dos casos você precisará somente do último.

6. Anexe o arquivo de log à issue ou à thread do fórum .

Se a versão do PhpStorm for a 7.0 ou mais antiga:

1. Feche o PhpStorm.
2. Abra o arquivo <instalação do PhpStorm>/bin/log.xml com um editor de texto
3. Vá até o fim do arquivo e adicione as seguintes linhas antes da tag <root>:

onde category_name é:

  • Problemas com depuração PHP: com.jetbrains.php.debug
  • Problemas com deploys e/ou sincronização: com.jetbrains.plugins.webDeployment

4. Inicie o PhpStorm e reproduza o problema.

5. Os arquivos de Log estarão em:

  • a partir do próprio PhpStorm (since 2.1 EAP):
    • Windows ou Linux: Help  Show Log in Explorer
    • Mac OS X: Help  Show Log in Finder
  • Maualmente (~ significa o diretório home do usuário):
    • Windows e Linux: ~\.WebIde<versão do PhpStorm>\system\log
    • Mac OS X: ~/Library/Logs/WebIde<versão do PhpStorm>

O ultimo arquivo de log é nomeado como idea.log; arquivos mais antigos terminam com um número, por exemplo idea.log.1, idea.log.2 etc. Na maioria dos casos você precisará somente do último.

6. Anexe o arquivo de log à issue ou à thread do fórum .

O Deploy demora ou falha

O Deploy pode ser uma operação intensiva no consumo de recursos, especialmente se um projeto ou servidor de deploy contém muitos diretórios e arquivos. A seguintes opções de configuração devem acelerar o deploy:

  • Exclua diretórios que não são necessários para o deploy (por exemplo: images). Isso pode ser feito a partir das configurações de servidores de deploy na aba Excluded Paths.
  • Em Project Settings → Deployment → Options, desselecione Overwrite up-to-date files para evitar subir arquivos que não devem sofrer upload.
  • Dependendo do servidor, alternar entre os modos ativo e passivo nas configurações avançadas de FTP pode ajudar. Isso pode ser feito em Project Settings → Deployment, abrindo Advanced Settings para o servidor e alternando a opção Passive mode.
  • Limite o número de conexões FTP concorrentes. Para fazê-lo, selecione Project Settings → Deployment, abra Advanced Settings para o servidor e acione o modo Limit concurrent connections, configurando o número de conexões (normalmente de 3 a 5 conexões concorrentes é suficiente para qualquer servidor se você tiver problemas com um número maior de conexões).

Ações de download/upload não estão disponíveis

As ações de download/upload podem não estar disponíveis por falta de algum mapeamento. Se um arquivo ou diretório que você quer baixar não está configurado em nenhum mapeamento, o PhpStorm não irá baixá-lo. Os mapeamentos podem ser configurados como descrito no tutorial deploys; alternativamente, selecione Project Settings → Deployment, abra a aba Mappings para o servidor e adicione os caminhos.

Para algumas ações, um servidor de deploy padrão deve ser configurado sob Project Settings → Deployment.

Por que o deploy não acontece para alguns diretórios?

Uma causa comum para diretórios que não sobem no deploy é quando são explicitamente excluídos. Para arrumar esta situação, use o menu de contexto no diretório em questão no painel Remote Host e clique em Remove Path From Excluded. Uma vez feito isso, o deploy funcionará para o diretório.

Isto pode também ser configurado a partir de Project Settings  Deployment, abrindo a aba Excluded Paths para o servidor e removendo o caminho excluído. Note que ambos diretórios, fonte e alvo, devem estar checados.

Os diretórios podem ser excluídos por nome em Project Settings  Deployment  Options em Exclude items by name.

A ação do menu File  Synchronize não sincroniza os arquivos com o servidor de deploy

O menu File  Synchronize não está relacionado a deploys: ele sincroniza os arquivos com o sistema de arquivos em caso de mudanças externas não detectadas automaticamente pelo IDE. A sincronia de arquivos de arquivos entre o projeto e o servidor de deploy está descrito no tutorial Sincronia de mudanças e upload automático.

Posso ter diferentes configurações de deploy para projetos diferentes? Tenho de inserir os detalhes de conexão todas as vezes?

Os servidores de Deploy são configurados no nível do IDE, mesmo sendo mostrados em Project Settings  Deployment. Por conta disso, eles estão disponíveis eles estão disponíveis para todos os projetos e são compartilhados entre eles. Note que somente o nome e os detalhes de conexão são compartilhados - os mapeamentos e caminhos excluídos são específicos por projeto e devem ser configurados separadamente.

Usando esta abordagem, os detalhes de conexão devem ser inseridos somente uma vez, enquanto que os mapeamentos e os caminhos excluídos podem ser configurados por projeto, compartilhando os detalhes de conexão.

Claro, isto é muito útil quando projetos compartilham o mesmo servidor de deploy e usam as mesmas configurações de coneão. Se as configurações de conexão são diferentes por projeto, as mesmas devem ser adicionadas e configuradas para cada projeto.

File  Default Settings  Deployment não permite configurar mapeamentos

O menu File  Default Settings  Deployment é usado para ajustar configurações padrão para futuros projetos e não afeta os projetos já configurados. Para configurá-los, use o menu File  Settings.

Há alguma maneira de ter diferentes configurações de deploy em diferentes subdiretórios? Um diretório local pode ter deploys para múltiplos servidores?

Há algumas coisas das quais devemos ter em mente sobre subir diretórios e configurar mapeamentos:

  1. Você pode especificar mapeamentos de diretórios específicos para diferentes caminhos no servidor de deploy. Isto pode ser configurado em Project Settings  Deployment, abrindo a aba Mappings para o servidor.
  2. Você pode excluir diretórios ou arquivos em específico para upload/download. Isto pode ser configurado em Project Settings  Deployment, abrindo a aba Excluded Paths para o servidor.
  3. Você não pode subir o mesmo diretório (ou subdiretórios) para diferentes sites de uma só vez. Uma configuração de deploy separada deve ser criada para cada um deles e devem ser subidos para um site por vez.

Se isto for o que você quer fazer, recomendamos que automatize o processo com uma ferramenta capaz disso. Por exemplo, Phing tem uma definição de tarefa FTP que pode ser usada a partir do PhpStorm (em inglês).

No PhpStorm, você pode usar o menu Sync with Deployed... e selecionar entre os servidores de deploy para cada upload.

Posso definir um atalho de teclado para usar o menu Sync With Deployed to Meu Servidor?

Não é possível definir um atalho diretamente para o menu Sync With Deployed to <nome do servidor>, somente para a ação genérica Sync with Deployed to..., que irá mostrar um popup com a lista dos servidores configurados. Isto pode ser feito através de de IDE Settings  Keymap.

Se quiser gravar um atalho para um servidor em específico, é possível gravar uma macro e definir para ela um atalho:

  1. Navegue pelo menu Edit  Macros  Start Macro Recording e inicie a gravação de uma macro.
  2. Selecione Tools  Deployment  Sync With Deployed to <nome do servidor> e feche a janela.
  3. Encerre a gravalção da Macro pelo menu Edit  Macros  Stop Macro Recording.
  4. Configure o nome da Macro, por exemplo Sincronize com <nome do servidor>
  5. Abra as configurações do PhpStorm e vá a IDE Settings  Keymap e encontre o nó de Macros. Use o menu de contexto na nova Macro de sincronia que acabamos de gravar e adicione um atalho.

Como eu faço o deploy de um banco de dados usando o PhpStorm?

Há algumas maneiras de fazer o deploy de um banco de dados usando o PhpStorm:

Posso rodar um script ou executável nos meus arquivos antes do upload?

Coisas como minificar CSS, otimizar imagens, obfuscação dos arquivos PHP usando IonCube e outras ações que queira executar antes do upload. A melhor abordagem para fazer isso não é quando o upload é iniciado, mas sim quando os arquivos são alterados, usando os Observadores de Arquivos (File Watchers) no PhpStorm. Quando for fazer o upload, simplesmente suba os arquivos processados.

Note que a opção Upload external changes deve estar habilitada em Project Settings  Deployment  Options para isso funcionar.

Alguns arquivos não são carregados automaticamente por upload

Por padrão, somente arquivos atualizados no editor serão "autocarregados". Para habilitar o "autocarregamento" para arquivos modificados por processos externos (versionamento, transpiladores...), selecione a opção Upload external changes em Project Settings  Deployment  Options.

Resolução de problemas de FTP

Problema de FTP: Invalid descendent file name "http:"

Quando um servidor de deploy estiver configurado ou usando o botão Test Connection nas configurações de projeto, um erro Invalid descendent file name "http:" é mostrado. Note que todos os nomes de arquivo com um caractere de dois pontos (":") no nome serão considerados inválidos.

Isso pode acontecer se um arquivo tiver um "http:" no nome existir no projeto. A biblioteca que o PhpStorm usa para se conectar por FTP (Apache Commons VFS) não pode ler o conteúdo de um diretório com este tipo de arquivo, e isso causa a falha na operação. A única solução aqui é remover o arquivo contendo o "http:" do projeto.

Parece que o PhpStorm se conecta ao servidor, mas não lista os arquivos ou realiza o upload

Isso pode acontecer quando o servidor requer uma conexão FTP passiva. Para configurar este modo, selecione Project Settings  Deployment, abra Advanced Settings para este servidor e acione a opção Passive mode.

Limitar o número de conexões FTP concorrentes pode ajudar nessa situação. Para fazer isso selecione Project Settings  Deployment, abra Advanced Settings para o servidor e acione a opção Limit concurrent connections configurando o número de conexões (normalmente de 3 a 5 conexões concorrentes é suficiente para qualquer servidor se você perceber problemas com um número alto de conexões).

Deploy de arquivos quando mudar de branches usando git checkout

Há dois jeitos de fazer o deploy enquanto alterna entre branches usando git checkout.

  • Um deles é configurar os deploys para que sempre suba os arquivos e mudanças externas. Para fazer isso, selecione Project Settings  Deployment  Options, ajuste a opção Upload changed files to the default server para Always e marque o checkbox de Upload external changes. Note que isso subirá todos os arquivos para o servidor quando alternar entre branches. 
  • Outro jeito é usar o git-ftp. Ele faz uploads e é capaz de espelhar remoções de arquivos e diretórios.

Problemas conhecidos

Leva um tempo para reconectar em cada operação de sincronia. Há alguma opção para não quebrar a conexão existente com o servidor de deploy?

Atualmente não há suporte para tal. Há uma issue com algumas maneiras alternativas descritas em nosso gerenciador de tarefas.

É possível abrir ou baixar diretamente do FTP sem especificar mapeamentos?

Não. Como descrito anteriormente neste tutorial, mapeamentos atualmente são requeridos para realizar operações de download de arquivos e diretórios de um servidor de deploy. Verifique esta issue para mais informação.

Lembre-se que usando o Arrastar e Soltar do FTP para o projeto local irá funcionar sem essa necessidade de mapeamento.

Rsync é suportado para sincronizar arquivos e diretórios com um servidor de deploy?

Não. Se você gostaria que isso fosse parte do PhpStorm, por favor vote nessa issue.

Posso rodar uma ação pré e pós deploy?

Atualmente isso não é possível. Por favor, vote nesta issue se você quer ver isso suportado no futuro.


  • No labels