Support et annonces PhpMyNewsLetter.
Vous n'êtes pas identifié(e).
Pages :: 1
Je commence !
Un bout de code pour tester si la fonction "exec" existe et est disponible !
La fonction est nécessaire au traitement des tâches planifiées.
<?php
function is_exec_available() {
// SOURCE : http://stackoverflow.com/a/12980534
static $available;
if (!isset($available)) {
$available = true;
if (ini_get('safe_mode')) {
$available = false;
} else {
$d = ini_get('disable_functions');
$s = ini_get('suhosin.executor.func.blacklist');
if ("$d$s") {
$array = preg_split('/,\s*/', "$d,$s");
if (in_array('exec', $array)) {
$available = false;
}
}
}
}
return $available;
}
?>
Linux Debian
Dédié
V2.0.4...
Testé sur mon serveur dédié : OK (OK)
Testé sur un espace mutualisé free.fr : NOK (false)... normal !
Cette fonction sera présente sur la 2.0.4 dés l'installation.
Je prends le temps de créer un outil pour tous, de niveau professionnel, mais simple !
Il n'est pas encore parfait, soyez indulgents, ça vient...
Si vous avez des questions, n'hésitez pas ! Mais soyez précis pour une réponse plus rapide
Hors ligne
Il ne manque pas un echo is_exec_available(); pour appeler la fonction et afficher le résultat ?
Moi la fonction me retourne 1
PS : le sujet épinglé est verrouillé.
Dernière modification par johnny (15-03-2015 17:27:57)
Poser une question c'est être idiot 5 minutes, ne pas la poser c'est le rester toute sa vie.
Hors ligne
Il n'y a pas besoin de echo, puisque l'on cherche juste true ou false.
1 c'est true, donc c'est bon.
Je déverrouille, merci
Je prends le temps de créer un outil pour tous, de niveau professionnel, mais simple !
Il n'est pas encore parfait, soyez indulgents, ça vient...
Si vous avez des questions, n'hésitez pas ! Mais soyez précis pour une réponse plus rapide
Hors ligne
ben sans faire appel à la fonction avec un echo ou un $variable = is_exec_available(); la fonction ne s'exécute pas. Je n'avais qu'une page blanche sans appel de la fonction, c'est comme ça que du coup j'ai lu le code et j'ai vu qu'il n'y avait pas d'appel de la fonction.
Tu as eu une réponse affichée juste avec ce code ? Ni plus ni moins ?
Poser une question c'est être idiot 5 minutes, ne pas la poser c'est le rester toute sa vie.
Hors ligne
Ca rentre dans un cadre global à l'installation :
if(is_exec_available()) {
echo "<h4 class='alert_success'>".tr("INSTALL_FUNCTION_OK", "exec")."</h4>";
append_cronjob('### TEST CRONTAB FOR PhpMyNewsLetter');
$test_cronatb_ok = exec('crontab -l | grep "###"');
if ($test_cronatb_ok == '### TEST CRONTAB FOR PhpMyNewsLetter') {
echo "<h4 class='alert_success'>".tr("INSTALL_FUNCTION_OK", "CRONTAB")."</h4>";
} else {
echo "<h4 class='alert_error'>".tr("INSTALL_FUNCTION_DOWN", "CRONTAB")."</h4>";
}
} else {
echo "<h4 class='alert_error'>".tr("INSTALL_FUNCTION_DOWN", "exec")."</h4>";
}
Je prends le temps de créer un outil pour tous, de niveau professionnel, mais simple !
Il n'est pas encore parfait, soyez indulgents, ça vient...
Si vous avez des questions, n'hésitez pas ! Mais soyez précis pour une réponse plus rapide
Hors ligne
ah oui ok, mais là pour faire un test faut appeller la fonction ^^' Dans ton code c'est le if qui l'appelle.
Mais, si chez moi j'ai 1, donc true, pourquoi la fonction crontab ne fonctionne pas ?
Poser une question c'est être idiot 5 minutes, ne pas la poser c'est le rester toute sa vie.
Hors ligne
Apache a un droit exec via une autorisation dans le php, ça, c'est bon.
Mais le user système apache n'a pas d'accès à ssh, et donc d'interactif en ligne de commande et donc pas de possibilité d'accéder aux tâches cron.
Je prends le temps de créer un outil pour tous, de niveau professionnel, mais simple !
Il n'est pas encore parfait, soyez indulgents, ça vient...
Si vous avez des questions, n'hésitez pas ! Mais soyez précis pour une réponse plus rapide
Hors ligne
c'est peut être pas plus mal d'un point de vue sécurité qu'on ne puisse pas modifier la config du serveur (en ssh) avec php non ? En cas de piratage d'un site le serveur ne pourrait être compromis.
Dernière modification par johnny (15-03-2015 19:42:06)
Poser une question c'est être idiot 5 minutes, ne pas la poser c'est le rester toute sa vie.
Hors ligne
Tout à fait, après il y a d'autres moyens de se prémunir dans le cadre d'une interface web à usage quasi-unique !
Je prends le temps de créer un outil pour tous, de niveau professionnel, mais simple !
Il n'est pas encore parfait, soyez indulgents, ça vient...
Si vous avez des questions, n'hésitez pas ! Mais soyez précis pour une réponse plus rapide
Hors ligne
Pages :: 1