Bonjour,
je vous partage un petit script qui mets à jour l' activation redis pour PHP en effet après chaque mis à jour de PHP il faut recréé l' extension.
Attention: je n' utilise pas d'extension officiel synology ( je crois qu' il n'en existe pas) .
Dans un premier temps il faut télécharger et installer REDIS sur votre nas, ajouter une source de paquet:
Name: digitalbox
Emplacement: https://digitalbox.go.zd.fr/
puis installer REDIS dans l' onglet "Communauté"


Vous pouvez vérifié l'exécution avec les commande ssh ping - pong mais je ne vais pas m' attarder dessus.
Ensuite j' ai créé un dossier partagé nommé ADMIN accessible que par les admin local du nas, dans ce dossier j' ai créé le dossier "script" qui contiendra le script à éxecuter:

Puis il faut créé une tache planifier en ROOT qui execute le script avec cette commande:
bash /volume1/ADMIN/script/ensure-php-redis.sh
pour ma part elle est exécuter à chaque démarrage du nas.
vous obtiendrez ensuite l' extension redis pour PHP:

Je me suis servie du tutoriel suivant: https://digitalboxweb.wordpress.com/2020/02/01/redis-sur-nas-synology/
Voici le script (Dans mon cas php est sur volume1) :
je vous partage un petit script qui mets à jour l' activation redis pour PHP en effet après chaque mis à jour de PHP il faut recréé l' extension.
Attention: je n' utilise pas d'extension officiel synology ( je crois qu' il n'en existe pas) .
Dans un premier temps il faut télécharger et installer REDIS sur votre nas, ajouter une source de paquet:
Name: digitalbox
Emplacement: https://digitalbox.go.zd.fr/
puis installer REDIS dans l' onglet "Communauté"


Vous pouvez vérifié l'exécution avec les commande ssh ping - pong mais je ne vais pas m' attarder dessus.
Ensuite j' ai créé un dossier partagé nommé ADMIN accessible que par les admin local du nas, dans ce dossier j' ai créé le dossier "script" qui contiendra le script à éxecuter:

Puis il faut créé une tache planifier en ROOT qui execute le script avec cette commande:
bash /volume1/ADMIN/script/ensure-php-redis.sh
pour ma part elle est exécuter à chaque démarrage du nas.
vous obtiendrez ensuite l' extension redis pour PHP:

Je me suis servie du tutoriel suivant: https://digitalboxweb.wordpress.com/2020/02/01/redis-sur-nas-synology/
Voici le script (Dans mon cas php est sur volume1) :
Bash:
#!/bin/bash
# RADIS Laboratory - Persistance Redis PHP 8.2, 8.3 et 8.4 sur Synology.
# Executer en root via le Planificateur de taches DSM.
set -u
umask 077
LOG="/volume1/ADMIN/script/ensure-php-redis.log"
mkdir -p "$(dirname "$LOG")" || exit 1
log() {
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >> "$LOG"
}
backup() {
local file="$1"
local dest="${file}.bak.$(date '+%Y%m%d-%H%M%S')"
cp -p "$file" "$dest" || {
log "ERREUR : sauvegarde impossible pour $file"
return 1
}
log "Sauvegarde creee : $dest"
}
ensure_version() {
local version="$1" n="$2"
local php="/usr/local/bin/php$n"
local module="/volume1/@appstore/PHP${version}/usr/local/lib/php${n}/modules/redis.so"
local ini="/usr/local/etc/php${n}/cli/conf.d/extension.ini"
local json="/volume1/@appstore/PHP${version}/misc/extension_list.json"
log "===== Debut PHP ${version} ====="
if [ ! -x "$php" ]; then
log "ERREUR : binaire PHP absent ou non executable : $php"
return 1
fi
if [ ! -f "$module" ]; then
log "ERREUR : module Redis absent : $module"
return 1
fi
if [ ! -f "$ini" ] || [ ! -f "$json" ]; then
log "ERREUR : fichier de configuration absent pour PHP ${version}."
return 1
fi
# extension.ini : ajouter la ligne uniquement si elle n'existe pas.
if grep -Eq '^[[:space:]]*extension[[:space:]]*=[[:space:]]*redis\.so([[:space:]]*;.*)?$' "$ini"; then
log "PHP ${version} : extension.ini contient deja redis.so."
else
backup "$ini" || return 1
printf '\nextension = redis.so\n' >> "$ini" || {
log "ERREUR : ecriture impossible dans $ini"
return 1
}
log "PHP ${version} : entree redis.so ajoutee dans extension.ini."
fi
# Valider le JSON avant toute modification.
"$php" -r '
$d = json_decode(file_get_contents($argv[1]), true);
exit(is_array($d) && json_last_error() === JSON_ERROR_NONE ? 0 : 1);
' "$json" >/dev/null 2>&1 || {
log "ERREUR : JSON invalide ou illisible : $json"
return 1
}
# Ajouter l'entree redis seulement si la cle est absente.
if "$php" -r '
$d = json_decode(file_get_contents($argv[1]), true);
exit(array_key_exists("redis", $d) ? 0 : 1);
' "$json"; then
log "PHP ${version} : entree redis deja presente dans extension_list.json."
else
backup "$json" || return 1
"$php" -r '
$p = $argv[1];
$d = json_decode(file_get_contents($p), true);
if (!is_array($d) || json_last_error() !== JSON_ERROR_NONE) {
fwrite(STDERR, "JSON invalide\n");
exit(1);
}
if (!array_key_exists("redis", $d)) {
$d["redis"] = [
"enable_default" => true,
"desc" => "PHPredis extension from REDIS API"
];
}
$j = json_encode($d, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
if ($j === false) {
fwrite(STDERR, "Encodage JSON impossible\n");
exit(1);
}
$tmp = $p . ".tmp." . getmypid();
if (file_put_contents($tmp, $j . PHP_EOL, LOCK_EX) === false) {
@unlink($tmp);
exit(1);
}
if (!rename($tmp, $p)) {
@unlink($tmp);
exit(1);
}
' "$json" || {
log "ERREUR : modification JSON impossible pour PHP ${version}."
return 1
}
log "PHP ${version} : entree redis ajoutee dans extension_list.json."
fi
# Tester le chargement de l'extension dans PHP CLI.
if "$php" -m 2>/dev/null | grep -qi '^redis$'; then
log "OK : Redis est charge par PHP ${version} CLI."
else
log "ATTENTION : Redis ne figure pas dans php -m pour PHP ${version}."
fi
log "===== Fin PHP ${version} ====="
return 0
}
if [ "$(id -u)" -ne 0 ]; then
log "ERREUR : ce script doit etre execute en root."
exit 1
fi
failed=0
ensure_version "8.2" "82" || failed=1
ensure_version "8.3" "83" || failed=1
ensure_version "8.4" "84" || failed=1
if [ "$failed" -ne 0 ]; then
log "Termine avec une ou plusieurs erreurs."
exit 1
fi
log "Verification des versions PHP 8.2, 8.3 et 8.4 terminee."
exit 0