Jump to content
Froxlor Forum
  • 0

WordPress: System-Temp Ordner nur mehr mit chmod 777 verwendbar


chrisiwien

Question

Hallo!

Meine Server/Froxlor-Installation unter Debian 9 mit Apache 2.4 und PHP-FPM 7.3 läuft grundsätzlich sehr gut, wenn ich einen neuen Kunden einrichte, dazu eine Domain und eine Datenbank klappt bisher alles prima.

Ich stehe nun bei einer neuen WordPress-Installation vor dem Problem, dass der System-Temp Ordner (var/customers/tmp/username) nur mit chmod 777 funktioniert, das ist natürlich suboptimal... bei den anderen funktionierenden Installationen hat der jeweilige Temp-Ordner die Berechtigung 750 und alles klappt.

Bisher habe ich eine neue Website strikt nach dieser Abfolge angelegt:

  1. Kunde/Benutzername einrichten
  2. Datenbank einrichten
  3. Domain einrichten und dem Benutzer zuweisen

Beim letzten Mal habe ich unter Zeitdruck die Schritte vertauscht, und nach Nicht-Funktionieren den Kunden und die Domain wieder gelöscht und nochmals angelegt. Scheint so dass sich Froxlor "verschluckt" hat...

Woran kann das liegen dass der System-Temp Ordner nur mehr mit chmod 777 funktioniert? Wie kann ich das ändern? Die vHost-Settings und die php-fpm pool Konfiguration entsprechen den anderen Installationen.

Der System-Temp Ordner ist für die Funktionalität von WordPress entscheidend, z.B. Mediaupload, Speichern von Gutenberg-Posts...

Froxlor-Version ist 0.10.15-1 (DB: 202002290)

 

Grüße aus Wien

 

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0
vor 22 Minuten schrieb d00p:

ehm ja überprüfe mal die uid/guid ....aber anlegen von gleichem user geht eigentlich nicht wenn es den ordner noch gibt?! Prüfe mal die Permissions auf dem ordner, sollte komplett "user:user" sein (zur not mal 'chown -R user:user /var/customers/webs/user)

Ha, das weiß ich garantiert dass das username:username ist... da ich keine stabile FTP-Verbindung mit proFTP zusammenbekomme gehe ich immer über SFTP mit root rein und chmode dann den gesamten Ordner in der Shell händisch auf den username... *rotwerd* - was soll ich tun, wieder zig Stunden in das Thema FTP investieren...uff...

Gack: Hab folgendes entdeckt: der Temp-Ordner (var/customers/tmp/username) hat die User/Gruppenzuweisung (in WinSCP angezeigt) 10006 [10006], währenddessen die anderen - funktionierenden - haben username2 [10006]. Wird auch mit ls -l so angezeigt.

Hab den Temp-Ordner jetzt manuell mit chown -R auf username:username gesetzt und ...

... es läuft! 😀

Danke Dir für den Zuspruch! Da ja alles mit Froxlor von Haus aus gehen sollte hab ich hier gefragt. War keine schlechte Idee, wieder was gelernt!

 

Link to comment
Share on other sites

  • 0

mit welchem user versucht denn wordpress da was zu erstellen/zu schreiben? 750 -> user rwx und gruppe r-x, die gruppe darf also nicht schreiben, wenn es ein reiner http request ist (also php damit nix zu tun hat) versucht natürlich der webserver user zu schreiben, der ja an sich fürs lesen erstmal in der gruppe des kunden ist aber nicht schreiben darf. Da weiss ich allerdings nicht was wordpress da intern macht. Denn alles was via PHP ausgeführt wird, läuft unter dem php-fpm user und somit unter Kunden-Benutzer. Da sollte 750 wunderbar funktionieren. Ansonsten sollte auch 770 ausreichen, wenn die gruppe auch schreiben muss.

Link to comment
Share on other sites

  • 0

Hallo d00p!

Danke für die wie immer prompte Antwort! 770 hat leider auch nicht geholfen.

Ich habe die Berechtigungen wieder auf 750 gesetzt, im Error-Log username-error.log - als WordPress greift unter dem angelegten Kunden-Username zu (scheint so) - steht folgendes:

proxy_fcgi:error] [pid 28270:tid 140380049725184] [client xxx.xxx.xxx.xxx:61211] AH01071: Got error 'PHP message: PHP Warning:  Unknown: Unable to create temporary file, Check permissions in temporary files directory. in Unknown on line 0PHP message: PHP Warning:  Unknown: POST data can't be buffered; all data discarded in Unknown on line 0PHP message: PHP Warning:  array_key_exists() expects parameter 2 to be array, null given in /var/customers/webs/username/wp-includes/rest-api/class-wp-rest-request.php on line 412PHP message: PHP Warning:  array_key_exists() expects parameter 2 to be array, null given in /var/customers/webs/username/wp-includes/rest-api/class-wp-rest-request.php on line 412', referer: http://username.domain.com/wp-admin/post.php?post=5&action=edit

 

vHost-Datei vom nicht funktionierenden Host:

# 35_froxlor_normal_vhost_username.domain.com.conf
# Created 09.06.2020 16:28
# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.

# Domain ID: 16 - CustomerID: 8 - CustomerLogin: username
<VirtualHost [Server-IP]:80>
  ServerName username.domain.com
  ServerAlias *.username.domain.com
  ServerAdmin chrisiwien@domain.com
  DocumentRoot "/var/customers/webs/username/"
  <FilesMatch \.(php)$>
  SetHandler proxy:unix:/var/lib/apache2/fastcgi/1-username-username.domain.com-php-fpm.socket|fcgi://localhost
  </FilesMatch>
  <Directory "/var/customers/webs/username/">
    CGIPassAuth On
    Require all granted
    AllowOverride All
  </Directory>
  LogLevel warn
  ErrorLog "/var/customers/logs/username-error.log"
  CustomLog "/var/customers/logs/username-access.log" combined
</VirtualHost>

vHost-Datei von einem anderen, mit Temp-Ordner auf 750, funktionierenden Host:

# 35_froxlor_normal_vhost_username2.domain.com.conf
# Created 09.06.2020 16:28
# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.

# Domain ID: 3 - CustomerID: 2 - CustomerLogin: username2
<VirtualHost [Server-IP]:80>
  ServerName username2.domain.com
  ServerAlias *.username2.domain.com
  ServerAdmin chrisiwien@domain.com
  DocumentRoot "/var/customers/webs/username2/"
  <FilesMatch \.(php)$>
  SetHandler proxy:unix:/var/lib/apache2/fastcgi/1-username2-username2.domain.com-php-fpm.socket|fcgi://localhost
  </FilesMatch>
  <Directory "/var/customers/webs/username2/">
    Require all granted
    AllowOverride All
  </Directory>
  Alias /webalizer "/var/customers/webs/username2/webalizer/username2.domain.com"
  LogLevel warn
  ErrorLog "/var/customers/logs/username2-username2.domain.com-error.log"
  CustomLog "/var/customers/logs/username2-username2.domain.com-access.log" combined
LogLevel debug
</VirtualHost>

 

In der Folge die php-fpm pool-Dateien, einmal vom funktionierenden, einmal vom nicht funktionierenden vHost. Um das ganze ev. abzukürzen, die Unterschiede die mir beim nicht funktionierenden Host aufgefallen sind:

php_admin_flag[allow_url_fopen] = Off
php_admin_value[open_basedir] = "/var/customers/webs/dcamp:/var/customers/tmp/dcamp:/usr/share/php:/usr/share/php5:/tmp" (open_basdir Wert ist definiert, bei der funktionierenden pool-Konfiguration nicht)
php_admin_value[post_max_size] = 16M (im Vergleich 256M bei der funktionierenden pool-Konfiguration. Mir ist auch aufgefallen, dass NUR bei sehr komplexen Gutenberg-Posts, also mit vielen Blöcken, Änderungen nicht gespeichert werden. Wie selbst die großen Gutenberg-Posts 16M haben sollen ist mir aber ein Rätsel. Sollte ja nur Text sein.)
 

php-fpm pool-Datei, nicht funktionierender Host:

;PHP-FPM configuration for "username.domain.com" created on 2020.06.09 16:28:44
[username.domain.com]
listen = /var/lib/apache2/fastcgi/1-username-username.domain.com-php-fpm.socket
listen.owner = username
listen.group = username
listen.mode = 0660
user = username
group = username
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 0
;chroot = /var/customers/webs/username/
security.limit_extensions = .php
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /var/customers/tmp/username/
env[TMPDIR] = /var/customers/tmp/username/
env[TEMP] = /var/customers/tmp/username/
php_admin_value[session.save_path] = /var/customers/tmp/username/
php_admin_value[upload_tmp_dir] = /var/customers/tmp/username/


php_admin_flag[allow_call_time_pass_reference] = Off
php_admin_flag[allow_url_fopen] = Off
php_flag[asp_tags] = Off
php_admin_value[disable_classes] = 
php_admin_value[disable_functions] = curl_multi_exec,exec,parse_ini_file,passthru,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,show_source,system
php_flag[display_errors] = On
php_flag[display_startup_errors] = Off
php_admin_flag[enable_dl] = Off
php_value[error_reporting] = E_ALL & ~E_NOTICE
php_admin_flag[expose_php] = Off
php_admin_flag[file_uploads] = On
php_admin_flag[cgi.force_redirect] = 1
php_admin_value[gpc_order] = "GPC"
php_flag[html_errors] = Off
php_admin_flag[ignore_repeated_errors] = Off
php_admin_flag[ignore_repeated_source] = Off
php_value[include_path] = ".:/usr/share/php/:/usr/share/php5/"
php_flag[log_errors] = On
php_admin_flag[log_errors] = On
php_value[log_errors_max_len] = 1024
php_flag[magic_quotes_gpc] = Off
php_flag[magic_quotes_runtime] = Off
php_flag[magic_quotes_sybase] = Off
php_value[max_execution_time] = 300
php_admin_value[max_input_time] = 1000
php_admin_value[memory_limit] = 256M
php_admin_value[open_basedir] = "/var/customers/webs/username:/var/customers/tmp/username:/usr/share/php:/usr/share/php5:/tmp"
php_admin_value[output_buffering] = 4096
php_admin_value[post_max_size] = 16M
php_admin_value[precision] = 14
php_admin_flag[register_argc_argv] = Off
php_admin_flag[report_memleaks] = On
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f chrisiwien@domain.com"
php_value[session.auto_start] = 0
php_value[session.cookie_domain] = 
php_value[session.cookie_lifetime] = 0
php_value[session.cookie_path] = /
php_admin_value[session.gc_divisor] = 1000
php_admin_value[session.gc_probability] = 1
php_value[session.name] = PHPSESSID
php_value[session.serialize_handler] = php
php_flag[session.use_cookies] = 1
php_flag[short_open_tag] = On
php_flag[suhosin.simulation] = Off
php_flag[track_errors] = Off
php_value[upload_max_filesize] = 32M
php_admin_value[variables_order] = "GPCS"
php_admin_value[opcache.restrict_api] = "/var/customers/webs/username/"

 

php-fpm pool-Datei, funktionierender Host:

;PHP-FPM configuration for "username2.domain.com" created on 2020.06.09 16:28:44
[username2.domain.com]
listen = /var/lib/apache2/fastcgi/1-username2-username2.domain.com-php-fpm.socket
listen.owner = username2
listen.group = username2
listen.mode = 0660
user = username2
group = username2
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 0
;chroot = /var/customers/webs/username2/
security.limit_extensions = .php
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /var/customers/tmp/username2/
env[TMPDIR] = /var/customers/tmp/username2/
env[TEMP] = /var/customers/tmp/username2/
php_admin_value[session.save_path] = /var/customers/tmp/username2/
php_admin_value[upload_tmp_dir] = /var/customers/tmp/username2/


php_admin_flag[allow_call_time_pass_reference] = Off
php_admin_flag[allow_url_fopen] = On
php_flag[asp_tags] = Off
php_admin_value[disable_classes] = 
php_admin_value[disable_functions] = curl_multi_exec,exec,parse_ini_file,passthru,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,show_source,system
php_flag[display_errors] = Off
php_flag[display_startup_errors] = Off
php_admin_flag[enable_dl] = Off
php_value[error_reporting] = E_ALL & ~E_NOTICE
php_admin_flag[expose_php] = Off
php_admin_flag[file_uploads] = On
php_admin_flag[cgi.force_redirect] = 1
php_admin_value[gpc_order] = "GPC"
php_flag[html_errors] = Off
php_admin_flag[ignore_repeated_errors] = Off
php_admin_flag[ignore_repeated_source] = Off
php_value[include_path] = ".:/usr/share/php/:/usr/share/php5/"
php_flag[log_errors] = On
php_admin_flag[log_errors] = On
php_value[log_errors_max_len] = 1024
php_flag[magic_quotes_gpc] = Off
php_flag[magic_quotes_runtime] = Off
php_flag[magic_quotes_sybase] = Off
php_value[max_execution_time] = 60
php_admin_value[max_input_time] = 60
php_admin_value[memory_limit] = 256M
php_admin_value[output_buffering] = 4096
php_admin_value[post_max_size] = 256M
php_admin_value[precision] = 14
php_admin_flag[register_argc_argv] = Off
php_admin_flag[report_memleaks] = On
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f chrisiwien@domain.com"
php_value[session.auto_start] = 0
php_value[session.cookie_domain] = 
php_value[session.cookie_lifetime] = 0
php_value[session.cookie_path] = /
php_admin_value[session.gc_divisor] = 1000
php_admin_value[session.gc_probability] = 1
php_value[session.name] = PHPSESSID
php_value[session.serialize_handler] = php
php_flag[session.use_cookies] = 1
php_flag[short_open_tag] = On
php_flag[suhosin.simulation] = Off
php_flag[track_errors] = Off
php_value[upload_max_filesize] = 256M
php_admin_value[variables_order] = "GPCS"
php_admin_value[opcache.restrict_api] = ""

 

 

 

 

 


 

Link to comment
Share on other sites

  • 0

Okay dann schau doch mal ob "open_basedir" beim nicht-funktionierenden ggfls das Problem ist. Also ich habe selbst ein wordpress unter einem php-fpm kunden laufen, das läuft problemlos. Versuchs mal mit dem Deaktivieren von open_basedir

Link to comment
Share on other sites

  • 0

Noch etwas: ich fliege immer auch nach kurzer Zeit aus Froxlor raus und muss mich neu anmelden. Könnte sein, dass im Zuge dessen einige Werte nicht korrekt in die Froxlor-Datenbank geschrieben wurden. Gibt es in Bezug auf mein Problem irgendeinen Wert den ich in der Froxlor-Datenbank überprüfen könnte?

Link to comment
Share on other sites

  • 0
Just now, chrisiwien said:

Noch etwas: ich fliege immer auch nach kurzer Zeit aus Froxlor raus und muss mich neu anmelden. Könnte sein, dass im Zuge dessen einige Werte nicht korrekt in die Froxlor-Datenbank geschrieben wurden. Gibt es in Bezug auf mein Problem irgendeinen Wert den ich in der Froxlor-Datenbank überprüfen könnte?

das scheint mir jetzt aber wieder was ganz anderes zu sein....dazu zählt eigetlich nur session-timeout setting und simultane logins (falls genutzt)

Link to comment
Share on other sites

  • 0

Habs versucht mit open_basedir wegnehmen. Auch die php-Konfig vom funktionierenden Host genommen, auch alle von mir gedachten problematischen Werte sind wie vom funktionierenden Host.

Nope. Geht nicht.

Ich bin mir da nicht ganz sicher, aber: wenn ich einen Kunden lösche, verschwinden nicht die Ordner im Verzeichnis "customers", richtig? Die müsste ich manuell entfernen.
Kann es sein - da ich den Kunden gelöscht und wieder unter dem gleichen Username angelegt habe - dass die noch existierenden Ordner da eine korrekte Verbindung verhindern?

Link to comment
Share on other sites

  • 0

ehm ja überprüfe mal die uid/guid ....aber anlegen von gleichem user geht eigentlich nicht wenn es den ordner noch gibt?! Prüfe mal die Permissions auf dem ordner, sollte komplett "user:user" sein (zur not mal 'chown -R user:user /var/customers/webs/user)

Link to comment
Share on other sites

  • 0

Hab im Zuge des Problems auch entdeckt, dass ich nach einem apt-update den Server nicht rebootet habe...hehe...äh...zuerst kam ich mit unsername.domain.com überhaupt nicht in das Verzeichnis...403 und dann 503, nachdem ich die Verzeichnisberechtigungen geändert habe. Nach dem Reboot hat es dann funktioniert - bis auf die Berechtigungen vom Temp-Ordner halt...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...