Posts by peng

    Danke für Eure Antworten,


    echi dieses Projekt (muss) auf einem shared Hosting laufen. Bei meinen vservern hätte ich ja viiiel mehr Freiheiten ;-)


    Ich habe als Lösung vorerst die Option gewählt, dass ich in der generierten Cache-Datei die Pfade manuell umbiege.


    Falls jemand auf das gleiche Problem stößt, so habe ich es gelöst:

    1. neuer artisan command: php artisan config:cacheSharedWebhosting /var/www/vhosts/hosting123.abc123.netcup.net
      der Parameter ist der Pfad der vorangestellt wird
    2. im Skript selbst ermittle ich den Hauptordner der Webanwendung --> /project_xy
    3. im Skript: /bootstrap/cache/config.php öffnen und nach /project_xy suchen. Hier den übergebenen Parameter aus dem Aufruf voranstellen

    Die Lösung ist nicht wirklich schön, aber sie funktioniert. Auf Dauer ist es denke ich eh besser das Projekt auf einen vServer zu migrieren, da ich früher oder später mit Sicherheit auf weitere Einschränkungen stoßen werde.

    Hallo tab


    dann hole ich mal ein wenig aus mit Informationen :-)


    Ich mache ein automatisches Deployment eines Projekts mit Laravel.

    Nachdem das Deployment fertig ist, generiere ich den Konfigurationscache neu (php ./artisan config:cache)

    Der Befehl schnappt sich die vielen Konfigurationsdateien und baut daraus eine Einzelne.


    In der neuen Datei sind dann Einträge (als Resultat) wie:

    Code
    1. 'path' => '/project_xy/storage/framework/cache/data',

    Die original Konfigurationsdatei für diese Zeile sieht so aus:

    Code
    1. 'path' => storage_path('framework/cache/data'),


    Der Eintrag /project_xy/storage/framework/cache/dataexistiert aber für einen Aufruf im Web nicht und es kommt zu einer Fehlermeldung (open_basedir ...)


    D.h.

    Code
    1. Falsch
    2. 'path' => '/project_xy/storage/framework/cache/data',
    3. Richtig
    4. 'path' => /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/storage/framework/cache/data

    Mache ich die diese Änderung in der gecachten Konfigurationsdatei händisch, funktioniert alles.


    storage_path() im original wird vermutlich auf __DIR__ zurückgreifen. Dies würde erklären, warum ich in der CLI und im Browserunterschiedliche Pfade habe. Mein Ziel (Wunsch) ist es also über die CLI valide Pfade für Aufrufe über den Browser zu erhalten.

    Hallo zusammen,


    ein neuer Tag, ein neues Problem ^^


    Ich habe ein Skript welches ich auf der Kommandozeile ausführen möchte (Im Detail: Ich erstelle den Konfigurationscache für laravel).

    Das Skript macht fleißig gebrauch von __DIR__ um die Konfigurationspfade abzulegen.


    Nun ist aber mein Problem, dass __DIR__ in der CLI und im Browser verschieden sind.


    __DIR__ in der CLI

    Code
    1. bash-4.4$ pwd
    2. /projekt_xy
    3. bash-4.4$ php -r "echo __DIR__;"
    4. /projekt_xy


    __DIR__ im Browser

    /var/www/vhosts/hosting123.abc123.netcup.net/projekt_xy


    Meine Frage nun:
    Habt ihr einen Tipp für mich wie ich den Pfad "umbiegen" kann?

    Was mir spontan einfällt:

    • Mir schwebt der Gedanke vor die untere Ordnerstruktur temporär "nachzubauen" und von dort aus dann das Skript aufzurufen, die Idee gefällt mir aber überhaupt nicht.
    • Nachträglich in der generierten Konfigurationsdatei die Pfade anpassen
    • Ein Hilfsskript bauen (welches ich über den Browser aufrufe) das wiederum mein Skript aufruft. Dann bin ich ja nämlich im richtigen Pfad


    Danke Euch

    Ich weiss nicht, ob sich open_basedir überhaupt mit symlinks austricksen lässt:


    "When a script tries to access the filesystem, for example using include, or fopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to access it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink."


    Quelle: https://www.php.net/manual/en/ini.core.php#ini.open-basedir

    Vielleicht verstehe ich die Aussage falsch, aber /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/storage (der Symlink) ist ja innerhalb von open_basedir


    Versuchs also mal mit

    cd /project_xy/202111106214144

    ln -s ../storage storage


    Perfekt. Das hat funktioniert! Vielen vielen Dank!


    Jetzt frage ich mich aber, warum hat mein Ansatz nicht funktioniert?

    Quote

    BTW: open_basedir kenne ich jetzt nicht, aber

    ln -s /project_xy/storage /project_xy/20211106214144/storage

    sieht für mich nicht gesund aus.

    Weil ich absolute Pfade verwende?

    Zusätzlich zu dem, was tab über mir bereits völlig korrekt angemerkt hat…


    Hat der Ordner project_xy die gleichen Rechte bzw. den gleichen Besitzer/Gruppe wie httpdocs?


    Falls nicht: Wiederhole den Test nochmals mit dem Docroot innerhalb von httpdocs.

    project_xy hat 755, httpdocs hat 750

    Code
    1. drwxr-xr-x 5 hosting123 psacln 4096 Nov 7 15:06 project_xy
    2. drwxr-x--- 2 hosting123 psaserv 4096 Nov 7 15:39 httpdocs

    tab und KB19

    Und wenn du den '/' am Anfang weglässt? Ansonsten wird das Ziel ja ein absoluter Pfad, der so natürlich nicht innerhalb von irgendwas liegen kann.

    hier habe ich ein Verständnisproblem.

    die(__DIR__)liefert mir /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/public

    und diesen Ordner bzw. alles unterhalb WEBSPACEROOT (=/var/www/vhosts/hosting123.abc123.netcup.net) kann ich problemlos auslesen wenn es kein Ziel von einem Symlink ist.


    Hier nochmal ein Update meiner Grafik:

    netcup2.png


    Euch beiden und auch allen anderen danke für die Hilfe! :-)

    Hallo zusammen,


    ich habe noch ein paar Tests gemacht und nun als Grafik zusammenfasst.

    Damit sieht man auf einen Blick was geht und was nicht:


    netcup.png



    Und wie führst du die index.php aus? Aufruf über den Browser?

    Korrekt, über den Browser.

    Nur um das auch noch auszuschließen: Ändert sich am Verhalten etwas, wenn der Symlink über den Webserver (PHP) erstellt wird? Oder taucht der Fehler da schon beim Erstellen mittels symlink() auf?

    Gerade getestet. Der Fehler tritt auch hier auf.


    Skript

    Code
    1. $result = symlink('/../../storage', __DIR__ . '/../storage');
    2. if ($result) { echo "symlink OK"; }
    3. else { echo "error"; }

    Ergebnis

    Code
    1. Warning: symlink(): open_basedir restriction in effect. File(/storage) is not within the allowed path(s): (/var/www/vhosts/hosting123.abc123.netcup.net/:/tmp/:/var/lib/php/sessions) in

    Danke für Deine Antwort.


    Ist FollowSymLinks oder SymlinkIfOwnerMatch auch gesetzt (.htaccess, falls Apache überhaupt verwendet wird)

    Ist gesetzt:

    Code
    1. <IfModule mod_rewrite.c>
    2. Options +FollowSymLinks
    3. RewriteEngine On
    4. </IfModule>


    Ich konnte das Problem sogar weiter Reduzieren:


    Also

    • ohne Laravel etc.
    • Obige .htaccess und folgende Index.php
    • DocumentRoot = /project_xy/20211106214144/public

    unterer Test liefert

    Code
    1. is not within the allowed path(s): (/var/www/vhosts/hosting123.abc123.netcup.net/:/tmp/:/var/lib/php/sessions)

    Sowohl vendor als auch storage sind aber innerhalb von /var/www/vhosts/hosting123.abc123.netcup.net/

    nämlich:

    Code
    1. vendor: /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/vendor
    2. storage: /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/storage

    Der einzige Unterschied: storage ist ein Symlink ln -s /project_xy/storage /project_xy/20211106214144/storage

    Hallo zusammen,


    ich entwickle gerade eine Webseite mit Laravel. Für einen Test wollte ich meinen aktuellen Stand bei Netcup hochladen.

    Leider scheint dies nicht zu klappen.


    mit display_errors=on sehe ich:

    Code
    1. Warning: file_exists(): open_basedir restriction in effect.
    2. File(/var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/public/../storage/framework/maintenance.php)
    3. is not within the allowed path(s): (/var/www/vhosts/hosting123.abc123.netcup.net/:/tmp/:/var/lib/php/sessions)
    4. in /var/www/vhosts/hosting123.abc123.netcup.net/project_xy/20211106214144/public/index.php on line 19

    open_basedir für die Domain ist im WCP wie folgt gesetzt: {WEBSPACEROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions

    Damit müsste die Datei (eigentlich?) auch erreichbar sein.


    Meine Ordnerstruktur:

    Code
    1. /project_xy/storage/ <= symlink: ln -s /project_xy/storage /project_xy/20211106214144/storage
    2. /project_xy/20211106214144/storage/
    3. /project_xy/20211106214144/storage/framework/
    4. /project_xy/20211106214144/storage/framework/maintenance.php
    5. /project_xy/20211106214144/public/ <= als document_root im WCP für die Domain eingestellt
    6. /project_xy/20211106214144/public/index.php

    "storage" liegt also Außerhalb des aktuellen Deployments und wird per Symlink in den Ordner gesetzt (ln -s /project_xy/storage /project_xy/20211106214144/storage)

    Verzichte ich auf diesen Symlink und lege stattdessen den "storage"-Ordner direkt in das entsprechende Verzeichnis, funktioniert es.


    Unter "Einstellungen für Apache & nginx" habe ich

    Fähigkeit, symbolischen Verknüpfungen zu folgen, einschränken Wählen Sie diese Option aus, um Benutzer daran zu hindern, die Anweisung FollowSymLink in .htaccess zu verwenden und um so die Serversicherheit zu verbessern. deaktiviert


    Zur Sicherheit noch eine weitere Übersicht der Struktur:

    Code
    1. bash-4.4$ ls -la /project_xy/20211106214144
    2. lrwxrwxrwx 1 hosting123 psacln 15 Nov 7 12:04 storage -> /project_xy/storage
    3. bash-4.4$ ls -la /project_xy/
    4. total 4672
    5. drwxr-xr-x 9 hosting123 psacln 4096 Nov 7 12:02 .
    6. drwx--x--- 18 hosting123 psaserv 4096 Nov 6 19:03 ..
    7. drwxr-xr-x 10 hosting123 psacln 4096 Nov 7 12:04 20211106214144
    8. drwxr-xr-x 5 hosting123 psacln 4096 Oct 31 00:47 storage

    Hat jemand von Euch eine Idee warum es nicht klappt?


    Vielen Dank.

    Das ist ein sehr sehr guter Vorschlag.


    Schade, dass sich hier Netcup noch nicht geäußert hat.) ping... [netcup] Lars S. .. oder wer auch immer :saint:^^)


    Wie Du sagst, die aktuelle Möglichkeit erlaubt es zumindest den gesamtem Webspace freizugeben, aber so richtig gefällt mir diese Lösung auch nicht.

    Guten Abend zusammen,


    ich habe schon Monate lang ein automatisches Backup auf einen anderen SFTP-Server bei einem großen Anbieter eingerichtet.

    Dies klappte soweit auch alles super.


    Einstellungen im WCP

    Code
    1. [x] Use FTP(S) storage
    2. [x] Use FTPS
    3. [x] use passive mode (mit und ohne probiert)

    Einstellungen beim anderen Hoster


    he.png



    Seit 3 Tagen gibt es nun plötzlich Fehler


    Mehrfach (durch das automatische Backup)

    Code
    1. Unable to create the remote backup: Curl error: Unable to finish an upload: (25) Upload failed (at start/before it took off): Last FTP request: QUIT: Last FTP response: 221 Goodbye: Connection to the FTP server has lost

    Manuell angestoßen

    Code
    1. Warning:
    2. Unable to find base backup for creation of incremental one, the full backup will be created. Error: Failed to exec pmm-ras: Exit code: 119: Import error: Unable to find archive metadata. The archive is not valid Plesk backup or has been created in an unsupported Plesk version
    3. Error:
    4. Unable to create the remote backup: Curl error: Unable to resume an interrupted upload: (55) Failed sending data to the peer: Last FTP request: APPE backup_xxxxxxxxxxx.tar: Last FTP response: 150 Opening BINARY mode data connection for backup_xxxxxxxx.tar: Connection to the FTP server has lost

    Auf dem FTP scheinen 0-KB-Dateien angelegt worden zu sein.. der Login sollte/muss also klappen...

    ftp.png


    Hat jemand von euch einen Tipp für mich wie ich die Ursache finde?


    Vielen Dank

    jupp, hatte heute (17.08.21) auch bestimmt 10 mal den Gateway-fehler 😠


    des weiteren haben sich in den letzten Tagen die (durchschnittlichen) Ladezeiten meiner Webseiten mal locker verdoppelt (siehe Anlage),

    ich weiß nicht, was die da schon wieder machen -> ob es an den laufenden updates auf mySQL 8 liegt ?

    Kurz nach meinem letzten Post habe ich ein Ticket eröffnet mit Uhrzeiten und Daten.


    Als Antwort bekam ich, dass man eine "Konfiguration geändert habe".

    Tatsächlich ist aber das Problem verschwunden.


    Was ich ebenfalls bemerkt habe: Die Seite (Typo3) brauchte sporadisch sehr lange. Ein anderes Mal ging es ruck zuck.

    Seit der "Konfigurationsänderung" lädt die Seite konstant schnell. Wobei ich seit gestern hin und wieder kleinere Hänger habe.

    Werde dies weiter beobachten.

    Durch Google bin ich auf diesen Thread hier gestoßen.

    Aktuell baue ich die Webseite eines Kunden um. Ebenfalls sehe ich in unregelmäßigen Abständen (häufig (!) ein nginx Gatway-Timeout).


    Werde dies weiter beobachten und dann den Support anschreiben. Der aktuelle Zustand ist jedenfalls definitiv nicht normal.

    Das Produkt ist ein Webhosting 16 Years.

    Hallo zusammen,


    aus meiner Pipeline heraus in Gitlab heraus möchte ich einen Upload auf den FTP von Netcup durchführen.

    Leider scheint dies nicht zu funktionieren....


    Befehl

    Code
    1. lftp -c "set ftp:ssl-force true; set ftp:ssl-protect-data true; open -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST; mirror -v ./ $FTP_DESTINATION --reverse --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"

    Fehler

    Code
    1. mirror: Fatal error: Certificate verification: subjectAltName does not match 'hosting11xxxx.a2f5d.netcup.net' (70:95:9B:50:01:XX:XX:XX:XX..........)


    Verbinde ich mich über meinen Client in Windows (FlashFXP) funktioniert die Verbindung

    pasted-from-clipboard.png


    Log


    Hat jemand von Euch einen Tipp für mich was ich falsch mache?


    Vielen Dank

    Gibt es irgend eine Möglichkeit hier beim "normalen" Hosting per SSL (predis / php) auf einen Redis Server zuzugreifen?

    stunnel scheint eigentlich genau das zu sein was ich suche.. Aber das kriege ich natürlich nicht auf dem shared hosting installiert.

    Absolut einfach und verständlich... Warum schreibt man das nicht direkt so in die Doku :D