compiled PHP - Cron Job tmp Fehler  [GELÖST]

Haben Sie einen Bug entdeckt? Teilen Sie es uns mit.
Post Reply
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

compiled PHP - Cron Job tmp Fehler

Post 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/
Attachments
screenshot_20240901_092905.png
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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?
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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 ....
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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 :roll:
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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.
User avatar
Florian
Keyweb AG
Posts: 1402
Joined: Wed 20. Jan 2016, 02:28

Re: compiled PHP - Cron Job tmp Fehler

Post by Florian »

Hallo,

auf was steht den der session.save_path?
Mit freundlichen Grüßen / Best regards
Florian Cheno

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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.
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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 ...
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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.
User avatar
24unix
Posts: 1789
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: compiled PHP - Cron Job tmp Fehler

Post 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
mfg Micha
--
95% aller Programmier halten sich für genial.
Der Rest immer noch für überdurchschnittlich.
User avatar
Ralph
Posts: 971
Joined: Mon 30. Mar 2020, 16:14

Re: compiled PHP - Cron Job tmp Fehler

Post 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.
User avatar
Alexander
Keyweb AG
Posts: 4028
Joined: Wed 20. Jan 2016, 02:23

Re: compiled PHP - Cron Job tmp Fehler  [GELÖST]

Post by Alexander »

Ist korrigiert mit kommendem Update.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Post Reply