O php exec / shell_exec / system / popen / proc_open roda chamando o próprio script inúmeras vezes no linux
Eu tenho um script que verifica se há erro de sintaxe no arquivo php usando php -l. Funciona bem no Windows, mas fornece saída incorreta no Linux:
O conteúdo do arquivo exec_ip.php que está sendo verificado quanto a erro de sintaxe é (possui erro de sintaxe que deve ser verificado):
<?php
$arr['12] = 'asd';
?>
e o script é:
$slash = file_get_contents('exec_ip.php');
//echo $slash;
$tmpfname = tempnam("tmp", "PHPFile");
file_put_contents($tmpfname, $slash);
exec("php -l ".$tmpfname,$error);
$errtext = '';
foreach($error as $errline) $errtext.='<br>'.$errline;
unlink($tmpfname);
echo 'ERR:'.$errtext;
RESULTADO NO WINDOWS (WAMP) {CORRETO}:
ERR:
Parse error: syntax error, unexpected T_STRING, expecting ']' in C:\WINDOWS\Temp\PHP1F1.tmp on line 2
Errors parsing C:\WINDOWS\Temp\PHP1F1.tmp
RESULTADO NO LINUX (Centos / cPanel) {SAÍDA DESCONHECIDA}:
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
Content-type: text/html
ERR:
... too many same above lines
Por favor, alguém me ajude e me indique porque está dando saída incorreta no servidor de produção linux. Eu também tentei usar shell_exec, popen, proc_open, system no lugar de exec, mas tudo tem o mesmo comportamento. Estou tentando rastrear a causa raiz dos últimos 2 dias ... ajude
EDITAR: Às vezes, vejo o seguinte errorlog "PHP Warning: exec (): Não é possível bifurcar [php -l / tmp / PHPFileI4T43l] em /home/user/public_html/exect.php na linha 5". Eu acho que é o próprio comando recorrente recorrente, criando um novo processo em cada recursão, mas não foi possível obter a causa.