PHP: Introdução

Como começar com PHP no Stackhero

👋 Bem-vindo à documentação do Stackhero!

Stackhero oferece uma solução PHP cloud pronta a usar que proporciona uma série de benefícios, incluindo:

  • Implemente a sua aplicação em segundos com um simples git push.
  • Utilize o seu próprio nome de domínio e beneficie da configuração automática de certificados HTTPS para uma segurança reforçada.
  • Desfrute de tranquilidade com backups automáticos, atualizações com um clique, e uma tarifação simples, transparente e previsível.
  • Obtenha performance ótima e segurança robusta graças a uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: só leva 5 minutos para experimentar a solução de PHP cloud hosting do Stackhero!

Implementar PHP no Stackhero é simples e poderoso. Em apenas alguns passos, pode ter a sua aplicação a funcionar online. Este guia irá orientá-lo na criação, configuração e implementação do seu serviço PHP de forma amigável e passo a passo.

Comece por criar um serviço PHP no Stackhero através do painel de controlo. A interface intuitiva torna o processo rápido e eficiente.

Antes de começar, certifique-se de que tem as seguintes ferramentas instaladas:

  1. Git. Pode descarregá-lo em https://git-scm.com/downloads.
  2. Os utilizadores de Windows podem achar que o Windows Terminal oferece uma experiência melhorada. Pode obtê-lo na Microsoft Store.

A única configuração que precisa ajustar no seu serviço é a chave pública SSH. Pode obter a sua chave pública usando um dos seguintes comandos:

cat ~/.ssh/id_rsa.pub

ou

cat ~/.ssh/id_ed25519.pub

Se ainda não tiver um par de chaves, pode gerar uma usando ssh-keygen no Linux e macOS ou ssh-keygen.exe no Windows.

Depois de obter a sua chave pública, aceda ao painel de controlo do Stackhero, selecione o seu serviço PHP, vá à página de configuração e cole a sua chave no campo apropriado.

Dica: Pode definir a sua chave pública SSH globalmente para que futuros serviços a incluam automaticamente. Para fazer isso, clique na sua foto de perfil no canto superior direito do painel de controlo, selecione 'O seu perfil' e cole a sua chave pública SSH.

Uma aplicação PHP simples foi preparada para demonstrar como funciona no Stackhero. Para começar, clone o repositório com os seguintes comandos:

git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started

O Stackhero simplifica a implementação da sua aplicação usando Git. Copie o valor fornecido pelo comando git remote da primeira página do seu serviço PHP no painel de controlo. O comando será semelhante a este:

git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git

Agora é hora de implementar a sua aplicação. Envie o seu código com o seguinte comando:

git push stackhero main

Na primeira vez que enviar, será solicitado a aceitar a impressão digital da chave. Digite "yes" quando solicitado. Após uma breve espera, a sua aplicação deverá estar online. Pode verificar o seu estado visitando o URL fornecido no painel de controlo do Stackhero (tipicamente algo como https://XXXXX.stackhero-network.com).

Para atualizar a sua aplicação, modifique o ficheiro www/index.php conforme necessário e reimplemente as suas alterações com:

git add -A .
git commit -m "Update www/index.php"
git push stackhero main

Se tiver uma aplicação PHP existente, pode facilmente implementá-la adicionando o repositório remoto ao seu projeto (veja Configurar o servidor de repositório remoto). Depois, envie as suas alterações usando:

git push stackhero main

Por padrão, o diretório público é definido como "www". É aqui que o seu código PHP é executado (incluindo index.php) e onde os seus ficheiros estáticos são armazenados. Por exemplo, visitar yourdomain.com/myphoto.jpg recupera o ficheiro de www/myphoto.jpg. Pode atualizar este diretório na configuração do seu serviço PHP, se necessário.

Se encontrar um erro como o seguinte ao implementar:

error: failed to push some refs to '[...]'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Este erro indica que o repositório Git remoto contém alterações que não estão presentes no seu repositório local. Para substituir estas alterações com segurança, pode forçar o envio com:

git push -f stackhero main

Se vir este erro:

error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'

Significa que o ramo main não existe localmente. Neste caso, tente enviar o ramo master em vez disso:

git push stackhero master

Se o Git responder com Everything up-to-date e as suas alterações não forem implementadas, pode ter esquecido de confirmar as suas alterações. Para resolver isso, execute:

git add -A .
git commit -m "Your commit message"
git push stackhero main

Se não tiver alterado nenhum código mas ainda assim quiser desencadear uma implementação, pode forçar uma atualização com um commit vazio:

git commit --allow-empty -m "Force update"
git push stackhero main

Se quiser implementar um ramo diferente de main (por exemplo, um ramo chamado "production"), pode usar o seguinte comando:

git push stackhero production:main

Para implementar uma tag específica (por exemplo, a tag "v1.0"), use:

git push stackhero 'v1.0^{}:main'

A sintaxe ^{} garante que o commit associado à tag seja enviado corretamente.

Se precisar de implementar um commit específico, primeiro obtenha o seu hash usando git log. Depois, force o envio desse commit usando:

git push -f stackhero <HASH>:main

Frequentemente, pode ter serviços separados para diferentes ambientes, como produção e staging. Pode gerenciá-los renomeando e adicionando repositórios remotos.

Para renomear o seu repositório remoto atual de stackhero para stackhero-staging, use:

git remote rename stackhero stackhero-staging

Em seguida, crie um novo serviço PHP para produção através do painel de controlo e adicione-o usando:

git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git

Agora pode implementar no ambiente apropriado usando:

git push stackhero-production main

ou

git push stackhero-staging main

No macOS, pode ser solicitado a introduzir a palavra-passe da sua chave sempre que enviar o seu código. Em vez de remover a palavra-passe da sua chave SSH, pode armazenar a palavra-passe da sua chave no keychain do macOS. Esta abordagem mantém a segurança enquanto poupa tempo. Execute o seguinte comando para adicionar a sua chave ao keychain:

/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa

Uma vez configurado, o macOS não pedirá mais a palavra-passe da sua chave ao enviar o seu código.

Para ambientes de produção e staging, é essencial armazenar dados sensíveis, como tokens e palavras-passe, de forma segura. Em vez de codificar segredos no seu repositório, considere usar variáveis de ambiente. Pode adicionar estas variáveis no painel de controlo do Stackhero e acedê-las no seu código. Por exemplo, se criar uma variável de ambiente chamada "mySecret", pode obter o seu valor em PHP usando:

getenv("mySecret")

Quando envia o seu código, os scripts de implementação leem o seu ficheiro composer.json e instalam automaticamente todas as dependências especificadas via Composer.

Se a sua aplicação precisar de armazenar ficheiros (por exemplo, fotos de utilizadores), é aconselhável usar uma solução de armazenamento de objetos. Esta abordagem facilita não só o compartilhamento de ficheiros entre múltiplos serviços, mas também separa os seus ficheiros carregados do seu código. Recomendamos explorar MinIO para uma solução rápida, fiável e compatível com S3.

Alternativamente, se preferir armazenamento de ficheiros local, pode usar o armazenamento persistente fornecido com a sua instância PHP. Este armazenamento está localizado no diretório /persistent/storage/.

Por exemplo, para armazenar um ficheiro carregado, pode usar a função move_uploaded_file da seguinte forma:

move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');

Para mais detalhes sobre uploads de ficheiros, consulte a documentação oficial do PHP: https://www.php.net/manual/en/features.file-upload.php.

ATENÇÃO: Nunca armazene dados fora da pasta /persistent/storage/!

Se a sua instância reiniciar ou se enviar alterações de código, quaisquer dados armazenados fora do armazenamento persistente podem ser perdidos!