Jak ověřit syntaktickou správnost PHP skriptu za běhu

Potřeboval jsem v práci urychleně vyřešit následující problém a protože jsem řešení nevymyslel, ale našel, tak se o něj rád podělím:

V jednom PHP skriptu byl vkládán pomocí include jiný PHP skript, který však byl generován jiným zařízením a bohužel při určité konstelaci hvězd najednou obsahoval syntaktické chyby. Bohužel to mělo za následek zastavení vykonání i celého hlavního skriptu a to nebylo rozhodně žádoucí.

Zkoušel jsem jsem snad všechno, jak obejít hlášení chyby ve vkládaném skriptu (informace z tohoto skriptu nebyly tak důležité, důležitý byl běh celého skriptu, takže kdybych ho dokázal odstavit, problém by byl vyřešen), od zavináče až po výjimky. Bez úspěchu.

Řešení jsem našel až v diskuzi k funkci include v manuálu PHP (autorem tipu je Gillis Danielsen):

<div id="foo">
<?php
function ChkInc($file){
  if (substr(exec("php -l $file"), 0, 28) == "No syntax errors detected in") {
    return true;
  }
  else {
    return false;
  }
}
?>
</div>

Někdo může říci, že to není úplně košér, ale účel světí prostředky. :-)


About this entry