Synology Planificateur de tâches

Valeriane

Apprenti
6 Février 2023
35
6
8
Bonjour,

Nous sommes sur un serveur Synology. Je développe en PHP/MySql et j'ai besoin d'utiliser le planificateur de tâches pour lancer un script PHP (je précise que j'ai les droits administrateur). J'ai l'impression qu'il ne comprend pas que mon fichier est en PHP. Quelqu'un pour m'éclairer ?
Merci de votre retour,

Voici la commande programmée dans le planificateur :
/usr/local/etc/php70 -f
/volume1/web/xxx/automatisation.php

Le contenu d'automatisation.php
<?php
include("configuration.php");
include("requete_sql.classe.php");
$requete = "UPDATE interim_gestion SET envoi_commande='201' where id_interim=16";
$connexion = new connectSQL($requete, "");
?>

Et voilà le retour d'erreurs (reçu par mail) :

Tâche : TestAutomatisation
Heure de début : Mon, 06 Feb 2023 15:47:02 GMT Heure d’arrêt : Mon, 06 Feb 2023 15:47:03 GMT État actuel : 2 (Interrompu) Sortie standard/erreur :
sh: /usr/local/etc/php70: Is a directory
/volume1/web/xxx/automatisation.php: line 1: $'\r': command not found
/volume1/web/xxx/automatisation.php: line 2: ?php
: No such file or directory
/volume1/web/xxx/automatisation.php: line 3: $'\r': command not found
/volume1/web/xxx/automatisation.php: line 4: syntax error near unexpected token `"configuration.php"'
/volume1/web/xxx/automatisation.php: line 4: ` include("configuration.php");
'
 
Dernière édition:
Heure de début : Mon, 06 Feb 2023 15:47:02 GMT Heure d’arrêt : Mon, 06 Feb 2023 15:47:03 GMT État actuel : 2 (Interrompu) Sortie standard/erreur :
sh: /usr/local/etc/php70: Is a directory

/usr/local/etc/php70 est un dossier, comme l'indique la sortie standard d'erreur du shell ;)

Indique l'exécutable à la place.
 
  • J'aime
Réactions: jeu2
Sont problème est plutôt je pense les retour à la ligne en CRLF plutôt que LF de Linux.
Les fichiers ont ils été créé sous Windows ? @Valeriane
Si oui il faut utiliser un éditeur qui peut changer les retours à la ligne en LF . VSCode le fait et Notepad++ pour les plus connus.
 
Pour lancer un php depuis le planificateur de tache j'utilise ça par exemple:
php /volume1/web/xxx/automatisation.php
 
  • J'aime
Réactions: cooper
Sont problème est plutôt je pense les retour à la ligne en CRLF plutôt que LF de Linux.
Les fichiers ont ils été créé sous Windows ? @Valeriane
Si oui il faut utiliser un éditeur qui peut changer les retours à la ligne en LF . VSCode le fait et Notepad++ pour les plus connus.

Tu anticipes déjà la prochaine question de @Valeriane ? 😄
 
Dernière édition:
  • J'aime
Réactions: jeu2
Merci à tous pour vos réponses !
@cooper je vais tester votre proposition pour l'exécutable
@MilesTEG1, je suis bien sous Windows et j'utilise Notepad++ en encodage UTF-8 et le fichier fonctionne correctement si je le lance en dehors du planificateur.
@jeu2 je vais tester votre proposition aussi

Bonne journée,
 
Bon, ça avance mais il me manque un driver PDO (PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /volume1/web/ResaBsa2019/requete_sql.classe.php:34). Je précise que cela fonctionne via un client Web mais pas avec le planificateur.
ll me faut modifier le .ini mais je ne sais pas comment y accéder ; je suis aller dans Web Station, paramètres avancés, modifier, onglet Coeur où je retrouve ce qui semble être les paramètres du .ini. Quand je tape pdo en recherche, il m'affiche pdo_mysql.debug avec une valeur vide et pdo_mysql.default_socket avec pour valeur /tmp/mysql.sock.

Merci de votre aide,
 
@MilesTEG1, je suis bien sous Windows et j'utilise Notepad++ en encodage UTF-8 et le fichier fonctionne correctement si je le lance en dehors du planificateur.
Attention, l'encodage UTF8 n'est pas synonyme de retour à la ligne en LF ;)
euKhx7i.png
 
Bon, ça avance mais il me manque un driver PDO (PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /volume1/web/ResaBsa2019/requete_sql.classe.php:34). Je précise que cela fonctionne via un client Web mais pas avec le planificateur.
ll me faut modifier le .ini mais je ne sais pas comment y accéder ; je suis aller dans Web Station, paramètres avancés, modifier, onglet Coeur où je retrouve ce qui semble être les paramètres du .ini. Quand je tape pdo en recherche, il m'affiche pdo_mysql.debug avec une valeur vide et pdo_mysql.default_socket avec pour valeur /tmp/mysql.sock.

Merci de votre aide,

Les versions de PHP installées depuis le centre de paquets n'inclues pas les pilotes additionnels malheureusement.
Il va falloir passer soit via une image docker pour avoir une version de PHP compilée avec le pilote PDO inhérent à la baqe de données utilisée, soit installer sa propre version de PHP à la main sur ton Nas.

Tu peux vérifier ce qu'inclus la version de PHP en créant un fichier (par exemple phpconf.php avec le contenu suivant et en l'affichant avec un navigateur oueb) :

PHP:
<?php
    phpinfo();
?>

ou alors après connexion SSH au Nas, utiliser la commande suivante qui affichera également ces informations :

Bash:
php -i
 
Dernière édition:
@cooper : voici ce que m'affiche le phpinfo pour le pdo (fichier joint).

Excellent, autant pour moi (je pensais après recherche que les pilotes n'étaient pas installés à tort alors qu'ils sont installés mais pas activés par défaut) :

Bash:
root@<redacted>:/usr/local/etc# ls -vahlF --color=auto /volume1/\@appstore/PHP7.3/usr/local/lib/php73/modules/pdo_*
-rwxr-xr-x 1 root root 27K Mar 16  2022 '/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/pdo_dblib.so'*
-rwxr-xr-x 1 root root 27K Mar 16  2022 '/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/pdo_mysql.so'*
-rwxr-xr-x 1 root root 44K Mar 16  2022 '/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/pdo_pgsql.so'*
-rwxr-xr-x 1 root root 31K Mar 16  2022 '/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/pdo_sqlite.so'*
root@<redacted>:/usr/local/etc# ls -vahlF --color=auto /volume1/\@appstore/PHP8.0/usr/local/lib/php80/modules/pdo_*
-rwxr-xr-x 1 root root 31K Dec  6 04:10 '/volume1/@appstore/PHP8.0/usr/local/lib/php80/modules/pdo_dblib.so'*
-rwxr-xr-x 1 root root 31K Dec  6 04:10 '/volume1/@appstore/PHP8.0/usr/local/lib/php80/modules/pdo_mysql.so'*
-rwxr-xr-x 1 root root 48K Dec  6 04:10 '/volume1/@appstore/PHP8.0/usr/local/lib/php80/modules/pdo_pgsql.so'*
-rwxr-xr-x 1 root root 31K Dec  6 04:10 '/volume1/@appstore/PHP8.0/usr/local/lib/php80/modules/pdo_sqlite.so'*

Pour activer le pilote mysql il faut se rendre dans Web Station > Paramètres du langage de script > Sélectionner la version de PHP à utiliser > Extensions > Cocher le pilote pdo_mysql pour l'activer.
 

Pièces jointes

  • 01.png
    01.png
    406.2 KB · Affichages: 4
  • J'aime
Réactions: jeu2
Bonjour,
Je n'ai pas réglé mon problème.
Quand je vais dans la Web Station / Statut / je vois que dans les paquets dorsaux il y a plusieurs versions de php d'installées :
5.6 - 7.0 - 7.2 - 7.3 - 7.4 et si je vais dans gestion, elles sont toutes en exécution.
Quand je fais le phpinfo() dans mon client web, je suis en PHP 7.0.33.
A quel endroit on indique la version à utiliser pour la partie Web ? Je me dis que je pourrais passer en 7.4 et supprimer les versions précédentes ?
Il faut que je vous précise que nous n'avons plus d'administrateur du Nas Synology (retraite) et moi je n'ai que ma bonne volonté et les droits d'administrateur. Mais je ne voudrais pas faire de bêtise !
Merci de votre aide,
 
Hello @Valeriane,

Je n'ai pas réglé mon problème.
Quand je vais dans la Web Station / Statut / je vois que dans les paquets dorsaux il y a plusieurs versions de php d'installées :
5.6 - 7.0 - 7.2 - 7.3 - 7.4 et si je vais dans gestion, elles sont toutes en exécution.

Alors non les différentes versions ne sont pas exécutées mais installées ;)

Quand je fais le phpinfo() dans mon client web, je suis en PHP 7.0.33.
A quel endroit on indique la version à utiliser pour la partie Web ?

Pour le serveur par défaut c'est ici :

Portail de services Web > Sélection du portail par défaut > Modifier

01.png

Pour le ou les hôtes virtuels (VirtualHost dans la jargon d'Apache) :

Portail de services Web > Sélection du portail défini par l'utilisateur > Modifier

02.png

Je me dis que je pourrais passer en 7.4 et supprimer les versions précédentes ?

C'est possible oui. Dans le Centre de paquets de DSM, tu désinstalles les versions souhaitées (si elles sont toujours nécessaires, DSM te l'indiquera).

Il faut que je vous précise que nous n'avons plus d'administrateur du Nas Synology (retraite) et moi je n'ai que ma bonne volonté et les droits d'administrateur. Mais je ne voudrais pas faire de bêtise !
Merci de votre aide,

C'est tout à ton honneur et il ne faut pas hésiter à consulter/participer aux forums pour des sujets qui ne te sont pas familiers 🍺
 
Normal car certains services utilisés par DSM utilisent PHP ;)

Par exemple :
Bash:
root@<redacted>:~# ps ax |grep [p]hp
 2685 ?        S      0:00 php-fpm: pool Calendar
 2771 ?        S      0:00 php-fpm: pool Calendar
 3977 ?        S      0:00 php-fpm: pool Calendar
 8474 ?        S      0:00 php-fpm: pool www
 8475 ?        S      0:00 php-fpm: pool www
 8486 ?        S      0:00 php-fpm: pool www
 8487 ?        S      0:00 php-fpm: pool www
14106 ?        Ss     0:00 php-fpm: master process (/var/packages/Calendar/target/conf/calendar-php.conf)
19082 ?        Ss     1:43 php-fpm: master process (/usr/syno/etc/packages/WebStation/php_profile/b9a41bca-af4e-11e9-9fc0-6335258c6d96/fpm.conf)
20978 ?        Ss     1:12 php-fpm: master process (/usr/syno/etc/packages/WebStation/php_profile/139939eb-365d-4381-9996-ecf91c4216bc/fpm.conf)