Quando crias um site de Staging com o Plugin gratuito WP STAGING, o PHP pode interromper o processo com um erro de restrição open_basedir. A mensagem significa que o PHP está configurado para ler e escrever apenas dentro de uma lista fixa de diretorias, e a pasta onde o WP STAGING quer construir a cópia de Staging não está nessa lista. A solução é adicionar a tua diretoria do WordPress à linha open_basedir no teu ficheiro php.ini (ou nas definições de PHP do teu Hosting) e reiniciar o PHP. Este guia mostra-te como encontrar o ficheiro que o PHP realmente carrega, editá-lo em segurança e o que verificar se o erro não desaparecer.
Contents
Nota: Se tentares criar um site de Staging com o WP Staging Pro e receberes este erro ao tentar criar um site de Staging predefinido, podes usar a definição avançada para criar o site de Staging numa subpasta de ‘wp-content’. Depois disso podes parar de ler aqui.
Como se apresenta o erro de restrição open_basedir
open_basedir é uma definição de segurança do PHP que limita o acesso a ficheiros a uma lista aprovada de diretorias. Quando qualquer script, incluindo o WP STAGING, tenta aceder a um caminho fora dessa lista, o PHP recusa e regista um aviso. No registo do teu servidor ou no registo de depuração do WordPress, normalmente aparece algo como isto:
Warning: open_basedir restriction in effect.
File(/var/www/html/staging) is not within the allowed path(s):
(/var/www/html/) in /var/www/html/... on line ...
Também podes chegar a esta página a partir de uma mensagem do WP STAGING que refere não ter conseguido incluir um ficheiro de bootstrap e que indica o open_basedir como possível causa. Ambas apontam para o mesmo problema de fundo: a diretoria de que o WP STAGING precisa está fora dos caminhos permitidos. O caminho exato do ficheiro na tua mensagem indica-te qual a diretoria que tem de ser adicionada à lista permitida.
Porque é que o open_basedir bloqueia o WP STAGING
A diretiva open_basedir é definida no ficheiro php.ini e restringe o acesso a ficheiros do PHP às diretorias que indicares. Por predefinição, o WP STAGING cria o site de Staging numa subdiretoria da raiz do teu WordPress. Se essa raiz, ou a subdiretoria onde quer escrever, não estiver coberta pelo open_basedir, o PHP bloqueia a escrita e o site de Staging não pode ser criado. Adicionar a diretoria do WordPress à lista permitida remove o bloqueio sem desativar a definição de segurança.
Como resolver o erro de restrição open_basedir
Para resolveres o erro de restrição open_basedir e criares com sucesso um site de Staging com o WP STAGING, segue estes passos por ordem.
Passo 1: encontrar o ficheiro php.ini que o PHP realmente carrega
O ficheiro php.ini é o ficheiro de configuração do PHP e a sua localização varia consoante o ambiente de Hosting. Um servidor pode ter mais do que um php.ini, por isso editar o errado é a razão mais comum para uma correção parecer não fazer nada. Para encontrares o ficheiro que está mesmo em vigor, cria um pequeno ficheiro chamado phpinfo.php na raiz do teu WordPress com este conteúdo, abre-o no teu navegador e lê o valor de Loaded Configuration File:
<?php phpinfo(); ?>
Se tiveres acesso por shell, o comando php --ini mostra o mesmo caminho a partir da linha de comandos. Elimina o ficheiro phpinfo.php assim que tiveres o caminho, pois expõe detalhes do servidor. Se não conseguires de todo encontrar ou editar o php.ini, avança para a secção mais abaixo sobre Hosting sem acesso direto ao php.ini.
Passo 2: modificar a diretiva open_basedir
Depois de localizares o ficheiro php.ini, tens de o editar para incluir a diretoria onde queres criar o site de Staging. Abre o php.ini num editor de texto e encontra a linha que começa por open_basedir. Vais querer adicionar o caminho completo da tua diretoria raiz do WordPress (e respetivas subdiretorias) à lista existente. Separa múltiplos caminhos com dois pontos : em Linux ou ponto e vírgula ; em Windows.
Por exemplo, se o teu WordPress está instalado em /var/www/html/wordpress e a linha de configuração open_basedir no php.ini atualmente é:
open_basedir = "/var/www/html/"Precisas de a modificar para incluir a diretoria do WordPress:
open_basedir = "/var/www/html/:/var/www/html/wordpress/"Mantém os caminhos que já lá estavam. Remover um caminho existente para abrir espaço pode quebrar outras partes do teu site que dependam dele.
Passo 3: reiniciar o teu servidor web ou o PHP-FPM
Depois de guardares as alterações ao ficheiro php.ini, precisas de reiniciar o PHP para as alterações terem efeito. Se o teu site executa o PHP através do módulo integrado do Apache, reiniciar o Apache é suficiente. Se corre em PHP-FPM (comum em Nginx e em muitos serviços de Hosting geridos), também precisas de reiniciar o serviço PHP-FPM, e não apenas o servidor web, caso contrário a configuração antiga permanece em memória. Usa o painel de controlo do teu Hosting ou a documentação do teu fornecedor para saberes o comando exato de reinício.
Passo 4: voltar a tentar criar o site de Staging
Depois de reiniciares o PHP, tenta criar novamente o site de Staging com o WP STAGING. O erro de restrição open_basedir deve agora estar resolvido, permitindo que o processo de criação prossiga sem problemas. Para confirmares que a nova definição está ativa, recarrega a página phpinfo() do Passo 1 e verifica que o valor de open_basedir inclui agora a tua diretoria do WordPress.
Quando não podes editar diretamente o php.ini
Em Hosting partilhado e gerido, é frequente não teres acesso direto ao php.ini. Nesse caso, procura um painel de definições de PHP no painel de controlo do teu Hosting (por exemplo, um ecrã "MultiPHP INI Editor" ou "Select PHP Version" no cPanel) e define aí o open_basedir, ou pede ao teu fornecedor de Hosting que adicione o caminho do teu WordPress à lista permitida. Se preferires não mexer de todo nas definições do servidor, o WP STAGING pode construir o site de Staging dentro de uma pasta que já tenha permissões de escrita, como explica a nota no início deste artigo.
Se o erro de open_basedir continuar a aparecer
Se o erro persistir depois de editares o php.ini e reiniciares o PHP, percorre estas causas comuns:
- Editaste um
php.inique o PHP não carrega. Volta a verificar oLoaded Configuration Filedo Passo 1 e edita esse ficheiro exato. - Reiniciaste o servidor web mas não o PHP-FPM. Reinicia também o serviço PHP-FPM.
- O separador de caminhos está errado. Usa dois pontos em Linux e ponto e vírgula em Windows, e não deixes um separador no fim com uma entrada vazia.
- O teu fornecedor de Hosting impõe o
open_basedirde forma centralizada e ignora as tuas alterações. Contacta o suporte e pede que adicionem o caminho. - Como atalho, usa a definição avançada do WP STAGING para criar o site de Staging dentro de uma subpasta de
wp-content, que já tem permissões de escrita.
Conclusão
A restrição open_basedir é uma funcionalidade de segurança que, embora importante, pode por vezes interferir com operações legítimas como a criação de um ambiente de Staging para o teu site WordPress. Ao editares o ficheiro php.ini que o PHP realmente carrega, ao adicionares a tua diretoria do WordPress à lista permitida e ao reiniciares o PHP, podes eliminar o erro sem enfraquecer a segurança do teu servidor. Faz sempre um Backup do ficheiro php.ini antes de fazer alterações e consulta o teu fornecedor de Hosting se tiveres dúvidas sobre editá-lo por ti próprio.