PHP para Iniciantes: Operador de Execução
A maioria dos projetos PHP são feitos para web, então o operador que iremos abordar hoje dificilmente será necessário para fazer os comandos que suas requisições precisam. Fora a imensa brecha de segurança que você poderia criar na aplicação se deixasse uma dado de entrada do usuário se tornar um comando no sistema operacional... É, pode ser uma boa ideia NUNCA usar esse operador.
Mas Kiko, se é tão perigoso assim, por que ele existe?
Porque embora a maioria não necessite, tem quem precise. E eu sempre digo que o PHP foi feito para te dar liberdade para fazer o que quiser... Abrir uma brecha de segurança está incluso, rs. Tem várias formas de fazer isso, não é mesmo? Porém não é o ponto desse artigo.
A questão é que realmente tem projetos que fazem bom uso dessa operação. Você já teve acesso a um dashboard de hospedagem? Alguns deles dão a opção de usar um "Gerenciador de arquivos", que te dá acesso a fazer várias coisas diretamente do browser, como se estivesse navegando num FTP Client. Alguns desses gerenciadores são feitos em PHP e boa parte dos comandos utilizados para listar, abrir, alterar, excluir ou fazer upload é feito enviando comandos para o shell.
Esses comandos podem ser enviados tanto via shell_exec
quanto com o nosso brilhante operador em questão. Então, vamos falar sobre isso logo?
Operador `
Diferente dos outros operadores, este operador é apenas um alias. Ele é o mesmo que acionar a função shell_exec
e é usado encapsulando o comando que deseja fazer no shell.
Para funcionar, ele tem duas condições:
- o safe mode do PHP precisa estar desligado: isso não tem a ver com ser uma brecha de segurança ou não. Por padrão, o safe mode vem desligado no PHP. Mas se seu servidor ou hospedagem tiver uma segurança um pouco mais rígida, isso provavelmente vai estar ligado e o operador falhará miseravelmente;
- o comando
shell_exec
precisa estar habilitado no PHP.ini: afinal, ele é um apelido que chama essa função.
Modo de uso
É bem simples: você usa duas crases (`) e coloca o comando no meio. Você pode rodar qualquer comando de shell (aqueles comandos de terminais).
<?php
$explorer = `ls -la`;
echo "Pastas e arquivos no diretório atual:" . PHP_EOL;
echo "<pre>$explorer</pre>";
Um detalhe muito importante
Agora você sabe que o PHP pode executar os comandos no terminal. Se você manja de shell, você também sabe que quaisquer comandos precisam de um usuário para acioná-lo. Então você pode se perguntar: qual usuário o interpretador irá usar?
Isso depende do WebServer que está rodando o PHP. Por exemplo, WebServers como Apache ou NGINX provavelmente executarão como o usuário www-data
. Já se você inicializou o servidor ou o script via CLI, vai ser o usuário que você usou. Então se foi com sudo ou usuário root, será um usuário com permissões de root (pode fazer qualquer coisa).
Enfim, tudo bem se não entender nada do que mencionei acima... E se for o caso, não use isso em servidor algum até compreender perfeitamente os esquemas de permissão, grupos de usuários e usuários do sistema operacional onde sua aplicação ficará hospedada.
Fechado?! E por hoje é só! Um artigo bem pequeno, não é mesmo? Mas se curtiu, deixe um comentário e compartilha! Estou maravilhado com as mensagens da galera mandando feedbacks sobre meus artigos, espero que esteja agregando conhecimentos na suas vidas.
No próximo artigo, falaremos sobre Operadores de Incremento/Decremento. Você já conhece os operadores utilizados para soma e subtração, então o grande destaque do próximo artigo será a aplicação do incremento na tabela ASCII! Okay?
Inté!