Même si vous utilisez un déclencheur AFTER, la ligne n'est pas encore validée. Mais sys_exec() ne revient pas tant que le script php n'est pas terminé, donc le déclencheur AFTER ne peut pas se terminer, donc vous ne pouvez pas non plus valider l'INSERT.
C'est par conception. Après tout, vous pouvez faire plus d'opérations dans la même transaction, ou vous pouvez annuler la transaction. C'est le problème avec l'appel de processus externes à partir d'un déclencheur :les processus externes ne peuvent pas voir les données dans le cadre de la transaction dans la base de données.
Vous ne devriez pas faire cette tâche avec un déclencheur. Au mieux, vous devez utiliser le déclencheur pour définir une colonne "drapeau", puis écrire un processus externe pour rechercher les lignes avec le drapeau défini, puis appeler ce script PHP. De cette façon, seules les lignes qui ont été correctement insérées ET validées seront traitées.