Page 1 of 1
compiled PHP - Cron Job tmp Fehler
Posted: Sun 1. Sep 2024, 09:50
by Ralph
Ich bin sicher, dass die Ursache des Problems bei KeyHelp liegt
ja
Server-Betriebssystem + Version
Debian 11.11 (64-bit)
Eingesetzte Server-Virtualisierung-Technologie
KVM
KeyHelp-Version + Build-Nummer
24.2 (Build 3326)
Problembeschreibung / Fehlermeldungen
Bei einen PHP cron job (hier whmcs) mit kompilierten PHP Versionen werden alle cron job Session files im System /tmp abgelegt.
User >
PHP-Skript ausführen Pfad
Code: Select all
/home/users/user/www/user/crons/cron.php
Erwartetes Ergebnis
Session und sonstige tmp files des User cron jobs sollten im UIser /tmp landen
Tatsächliches Ergebnis
werden im System /tmp abgelegt
Schritte zur Reproduktion
Kompilierte PHP Version auswählen (hier 8.1) unter diesem User einen Cron job anlegen der z.b. session files erzeugt.
System /tmp prüfen
Die PHP confug zeigt die richtigen Pfade zwar an aber bei einem User Cron job werden diese wohl ignoriert:
/opt/keyhelp/php/8.1/etc/php-fpm.d/user_php81.conf
Code: Select all
; Environment variables
env[TMP] = /home/users/user/tmp/
env[TMPDIR] = /home/users/user/tmp/
env[TEMP] = /home/users/user/tmp/
; PHP immutable directives
php_admin_value[upload_tmp_dir] = /home/users/user/tmp/
php_admin_value[soap.wsdl_cache_dir] = /home/users/user/tmp/
Re: compiled PHP - Cron Job tmp Fehler
Posted: Sun 1. Sep 2024, 10:21
by Ralph
weitere Info
Ich hab jetzt mal die Cron Jobs geändert auf > Befehl ausführen
Code: Select all
/usr/bin/keyhelp-php81 -q /home/users/user/www/user/crons/cron.php
Hier tritt das gleiche Problem auf, habe auch die services cron und keyhelp-php81 neu gestartet ... keine Änderung
Ich muss dann voresrt auf die System PHP 7.4 zurück bis das Problem gelöst ist, Umstellung auf PHP 8.2 unter Bookworm nützt in dem Fall nichts wg. whmcs 8.10 (läuft nur bis PHP 8.1).
### edit ###
hab testweise mal nur den Cron job auf PHP 7.4 system default umgestellt, eine Fehlermeldung gibt es keine, whmcs 8.10 läuft ja unter 7.4 - 8.1, die Frage ist nur ob das Probleme machen könnte wenn die Anwendung auf PHP 8.1 läuft und der cron job über PHP 7.4 ausgeführt wird?
Re: compiled PHP - Cron Job tmp Fehler
Posted: Sun 1. Sep 2024, 15:55
by Ralph
Habe das Web wieder zurückgesetzt auf PHP 7.4, nur der Cron job mit der System PHP Version legt die session files im tmp unter dem User Web ab.
Bei den kompilierten PHP Versionen wird der System /tmp mit session files geflutet
Mein letzter Versuch über den echten Pfad schlägt ebenfalls fehl
Code: Select all
/opt/keyhelp/php/8.1/bin/php -q /home/users/user/www/user/crons/cron.php
Seltsam, vorletztes Jahr ist das nur bei soap.wsdl cron job requests aufgetreten (wurde ja bereits behoben) wenn eine kompilierte PHP Version verwendet wurde, jetzt mit den vielen session files im System /tmp ist neu ....
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 08:28
by Ralph
Bitte wartet noch, ich teste derzeit noch eine mögliche Lösung über einen angepassten Cron job Befehl, speziell für alle kompilierten PHP Versionen ... kann etwas dauern, ich melde mich später

Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 11:06
by Ralph
Die Auswahl "PHP-Skript ausführen" ist schon der richtige Ansatz, nur müsste dann die /opt/keyhelp/php/*/etc/php-fpm.d/user_php*.conf berücksichtigt werden, also beim erstellen müssten wenigstens die Environment variables abgefragt und integriert werden.
Die /opt/keyhelp/php/*/etc/php.ini an den Befehl anhängen ist zwar erlaubt, aber die nützt nichts ohne die ENV der user_php*.conf und somit landen die session files wieder im System /tmp.
Über den cron job als Befehl ist der Zugriff auf die user_php*.conf nicht erlaubt -> Permission denied.
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 11:11
by Florian
Hallo,
auf was steht den der session.save_path?
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 11:38
by Ralph
Florian wrote: ↑Mon 2. Sep 2024, 11:11
auf was steht den der session.save_path?
der ist korrekt, PHP info (auch im whmcs) zeigt:
/home/users/user/tmp/
Bei Login sessions über die Website gibt es keine Probleme damit, dieses Problem tritt nur auf wenn ein cron job über eine compiled PHP Version ausgeführt wird ... der cron service verursacht im Grunde das Problem mit den session files im System /tmp.
Bei Verwendung der System PHP Version tritt das Problem nicht auf (required PHP 7.2 - 8.1), also hab ich PHP 7.4 wieder aktiviert.
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 13:32
by Ralph
Ich habs noch nicht getestet, aber ich denke da an sowas in etwa ...
Code: Select all
# /var/spool/cron/crontabs/myuser
SHELL=/bin/bash
PATH=/home/users/myuser/tmp/
Also wenn Auswahl "PHP-Skript ausführen" gewählt wird, den PHP tmp Pfad abfragen und im crontab integrieren beim speichern ...
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 19:45
by Ralph
Hier die Lösung - TMPDIR muß im corntab angegeben werden!
Cron job erstellen als Befehl:
Code: Select all
/usr/bin/keyhelp-php81 -q /home/users/myuser/www/mydomain.tld/crons/cron.php &> /dev/null
crontab bearbeiten -
über SHELL=/bin/bash:
Code: Select all
crontab -u myuser -e
# ändern wie folgt
TMPDIR=/home/users/myuser/tmp
SHELL=/bin/bash
Code: Select all
systemctl restart keyhelp-php81-fpm.service
systemctl restart cron.service
Das hält allerdings nur temporär bis zum speichern eines cron jobs, dann wird es durch das crontab template überschrieben.
Mögliche temp. oder session files von User cron jobs haben im system /tmp nix zu suchen ...
Es wäre also ziemlich einfach TMPDIR einfach in das Template für die User cron jobs hinzuzufügen, das kann (sollte sogar) bei den User crontabs überall per default eingebunden werden.
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 19:54
by 24unix
Ich weiß ja nicht, ob ich was übersehe, aber ginge nicht einfach das:
Code: Select all
TMPDIR=/home/users/myuser/tmp /usr/bin/keyhelp-php81 -q /home/users/myuser/www/mydomain.tld/crons/cron.php &> /dev/null
Re: compiled PHP - Cron Job tmp Fehler
Posted: Mon 2. Sep 2024, 20:13
by Ralph
24unix wrote: ↑Mon 2. Sep 2024, 19:54
Ich weiß ja nicht, ob ich was übersehe, aber ginge nicht einfach das:
Code: Select all
TMPDIR=/home/users/myuser/tmp /usr/bin/keyhelp-php81 -q /home/users/myuser/www/mydomain.tld/crons/cron.php &> /dev/null
Es ging mir hierbei nicht darum nur eine schnelle Lösung für mich selbst zu finden
Das sollte meiner Meinung nach in das user crontab template, auch aus Sicherheitsgründen ... es schadet ja auch nicht die User cron jobs auf deren eigene /tmp zu forcieren.
Re: compiled PHP - Cron Job tmp Fehler [GELÖST]
Posted: Tue 3. Sep 2024, 10:46
by Alexander
Ist korrigiert mit kommendem Update.