<pre><?php system("ls -la /tmp"); ?></pre>
..
always shows just: . and .. folders and nothing else in browser. ..
What is the reason for this???
Isso é tudo que a função system()
foi projetada para fazer - somente retorna a última linha de saída do comando shell.
Então, por que existe um comando que só lhe dá uma linha inútil de saída? possivelmente porque system () permite que você capture o código de saída do processo shell (se você passar $return_var
como um segundo argumento) enquanto shell_exec
- que fornece toda a saída da shell, não fornece o código de saída!
Portanto, se você quiser toda a saída E o código de saída, você pode usar exec()
, mas exec
é um incômodo porque a saída completa só está disponível através da matriz de referência $output
veja sua saída.
Além disso, como você está brincando com /tmp
, você deve estar ciente de que novas versões do PHP-FPM usando systemd
para gerenciar o daemon do php-fpm passarão por uma configuração que bloqueia a execução de arquivos php de tmp.
Eu tenho php 7.0.1 em execução no meu laptop, mas depois eu fiz uma instalação de 7.1.1
e descobri que eles estão agora incorporando esta pequena diretiva
PrivateTmp=true
no arquivo de serviço do systemd. você precisa configurá-lo para false se você deseja executar scripts php de /tmp
para obter mais informações sobre esse problema específico link