O PHP pode ser executado em diferentes modos de operação, se o PHP for compilado como módulo do Apache (que é um caso para o XAMPP) então tudo o que o Apache pode ver estará disponível para PHP e como PHP é a linguagem do interpretador, ele pode executar o que pode ver (no caso de conter <?php ... ?>
, independentemente do tipo de arquivo). Se você rodasse o PHP como serviço de escuta independente (usando php-fpm), então você pode separar o Apache do PHP. O Apache neste caso será apenas o proxy de encaminhamento para o PHP. Dessa forma, você pode executar o Apache e o PHP em diferentes contas de usuário.
Lembre-se de que, mesmo que você instale o XAMPP sob root / administrator, ele deixará de ter permissão privilegiada após vincular a porta de escuta à conta de usuário especificada na configuração do apache.
Para poder executar o servidor web na porta 80 (porta privilegiada), o Apache precisa de permissões root / administrator para iniciar, mas após o início ele será executado como um usuário regular (de preferência restrito)
O XAMPP / LAMPP geralmente não está em uso na produção, pois tem por padrão configurações muito permissivas e é usado principalmente no estágio de desenvolvimento.
Se você quiser o modelo de segurança de produção, separe todas as funções de cada serviço e execute cada serviço (Apache, PHP, MySQL) em uma conta diferente, restrita (não administrativa).
Um bom modelo de segurança é quando tudo (todos acessíveis pelo Apache) exposto à Internet selvagem deve ter permissões somente de leitura, exceto os arquivos ou diretórios que realmente precisam ser graváveis, mas nesses casos você precisa restringir esses recursos no Apache, desabilitando o acesso ou a transformação do mecanismo PHP nesses diretórios, dependendo do caso de uso.
Voltar às suas perguntas: Você escreveu que está usando o XAMPP, o que significa que você o está executando no Windows. Clique com o botão direito do mouse na barra de tarefas e execute o gerenciador de tarefas para identificar o nome do processo do apache e a conta do usuário em execução para descobrir quais permissões o PHP teria.
Mas eu suponho que você esteja executando o LAMPP, não o XAMPP, já que o seu diretório web se parece com o ambiente baseado em unix "/home/adam/www/site/test2.php". É muito diferente das janelas. Dependendo do sistema operacional que você usa, o serviço Apache pode ser executado sob um nome diferente, em vez de httpd, pode ser um apache2 (no debian), portanto, ao tentar localizar o processo em execução, use o nome correto em grep
. (Para simplificar sua transmissão, instale o htop
no sistema baseado em unix para identificar a atividade do processo)
Se eu estiver certo que você usa o LAMPP, verifique as permissões do diretório da web e seus subdiretórios que são todos pertencentes ao mesmo usuário que o usuário do apache em execução. Se você precisar de proteção de base de arquivo de alguns arquivos, retire a propriedade de um usuário diferente do usuário designado para o serviço da Web.