PhpMyNewsLetter 2.0

Support et annonces PhpMyNewsLetter.

Vous n'êtes pas identifié(e).

Annonce

Pour me permettre de mieux vous aider au mieux, merci d'être le plus précis possible en donnant :
- la version de phpmynewsletter utilisée
- votre hébergement : personnel, dédié, mutualisé
- votre hébergeur (OVH, free, Infomaniak, 1and1,...)
- votre OS : linux, windows
- version de PHP (5.3, 5.6, 7.0, hhvm...)
Toutes les réponses à mes questions qui sont sans retour de votre part seront considérées comme résolues !

#1 15-03-2015 15:42:33

Arnaud
Administrateur

test si exec est disponible

Je commence ! big_smile

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  wink

Hors ligne

#2 15-03-2015 17:21:12

johnny
Modérateur

Re : test si exec est disponible

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

#3 15-03-2015 17:52:14

Arnaud
Administrateur

Re : test si exec est disponible

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  wink

Hors ligne

#4 15-03-2015 18:01:27

johnny
Modérateur

Re : test si exec est disponible

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

#5 15-03-2015 18:06:25

Arnaud
Administrateur

Re : test si exec est disponible

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  wink

Hors ligne

#6 15-03-2015 18:11:15

johnny
Modérateur

Re : test si exec est disponible

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

#7 15-03-2015 18:20:35

Arnaud
Administrateur

Re : test si exec est disponible

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  wink

Hors ligne

#8 15-03-2015 18:37:35

johnny
Modérateur

Re : test si exec est disponible

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

#9 15-03-2015 20:34:13

Arnaud
Administrateur

Re : test si exec est disponible

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  wink

Hors ligne

Pied de page des forums

Propulsé par FluxBB