Hi, kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme. Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben... Thx für jeden Tipp! -- cu jth
Am 24.03.23 um 13:04 schrieb Jörg Thümmler:
Hi,
kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme.
Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben...
Thx für jeden Tipp!
Hi, Nachtrag: der Symlink war auch schon vor 15.x so, habe grad meine alte Serverkopie befragt. Trotzdem lief es damals. Die fragliche Datei ist für jeden les- und schreibbar... was macht der Apache anders, als die Shell? -- cu jth
Am 24.03.23 um 13:28 schrieb Jörg Thümmler:
Am 24.03.23 um 13:04 schrieb Jörg Thümmler:
Hi,
kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme.
Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben...
Thx für jeden Tipp!
Hi,
Nachtrag: der Symlink war auch schon vor 15.x so, habe grad meine alte Serverkopie befragt. Trotzdem lief es damals. Die fragliche Datei ist für jeden les- und schreibbar... was macht der Apache anders, als die Shell?
Hi nochmal, kleckerweise ein paar "Erkenntnisse": Der Apache mag anscheinend bestimmte Verzeichnisse nicht, egal ob sie über Symlinks erreicht werden. /var/tmp und /usr/tmp jedenfalls nicht. Er findet Dateien in /usr/bin und an vielen anderen Stellen, andere Partitionen oder nicht. Und er "vererbt" diese merkwürdige Eigenschaft: wenn ich mit system() in php ein "sudo -i -u <user> starten lasse und dort in der .profile Dateien in den o.g. Verzeichnissen suchen lasse, ist es genau so. Und Rechte-unabhängig. Das manuell gestartete php script zeigt sie, das gleiche Script über die Webseite aufgerufen, nicht. Gibt es da irgendwo eine Konfig-Option? Und spielt es evt. eine Rolle, dass das ein vhost ist, der aktuell auf Port 81 lauscht (kann ich mir eigentlich nicht vorstellen, php macht sonst brav alles mit, nur die Verzeichnisse /usr/tmp bzw. /var/tmp kennt es nicht... Schon seltsam... -- cu jth
On 24.03.23 13:04, Jörg Thümmler wrote:
kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme.
Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben...
PHP interessiert sich für die FollowSymLinks-Option von Apache nicht. PHP kann teilweise auf bestimmte Verzeichnisse nicht zugreifen, wenn die open_basedir-Option in /etc/php8/apache2/php.ini gesetzt ist. Für die Fehlersuche ist es manchmal sinnvoll, die php-Skripte manuell zu starten: sudo -u www-data bash cd /srv/www/htdocs/<Ziel> php phpskript.php Björn
Am 24.03.23 um 15:09 schrieb Bjoern Voigt:
On 24.03.23 13:04, Jörg Thümmler wrote:
kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme.
Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben...
PHP interessiert sich für die FollowSymLinks-Option von Apache nicht. PHP kann teilweise auf bestimmte Verzeichnisse nicht zugreifen, wenn die open_basedir-Option in /etc/php8/apache2/php.ini gesetzt ist.
Für die Fehlersuche ist es manchmal sinnvoll, die php-Skripte manuell zu starten:
sudo -u www-data bash cd /srv/www/htdocs/<Ziel> php phpskript.php
Björn
Hi, die kannte ich noch nicht... ist aber nicht gesetzt. Mit sudo funzt das Script auch... trotzdem natürlich Danke, kann gut sein, dass das woanders mal aufschlägt... ich werde wohl einen wrapper in c schreiben, der mir das so aufruft, wie es läuft und hoffen, das der nicht zuviele Ressourcen frisst, wenn er alleweil gucken muss, ob eine Abfragedatei da ist... -- cu jth
Am Montag, 27. März 2023, 08:22:38 CEST schrieb Jörg Thümmler:
Am 24.03.23 um 15:09 schrieb Bjoern Voigt:
On 24.03.23 13:04, Jörg Thümmler wrote:
kennt sich jemand mit den Interna des Apachen bei Symbolischen Links aus? Ich habe eine Anwendung, die über einen system($command)-Befehl aus php heraus gestartet wird (eine DB-Abfrage, kein SQL). Die DB hat einen Lizenzzähler, der hardcoded in /usr/tmp liegt. Seit leap 15.x gibt es das nicht mehr, es ist jetzt ein Symlink auf /var/tmp. Obwohl ich für das entsprechende Verzeichnis "Options FollowSymLinks" gesetzt habe, meckert das php im Apachen den Lizenzzähler als "not found" an. Führe ich das Script manuell im entsprechenden Verzeichnis aus, findet er den Zähler ohne Probleme.
Wie kann ich dem Apachen beibringen, dem Link in /usr zu /var/tmp zu folgen? In der Version 2.2 scheint das funktioniert zu haben, zumindest kann ich mich nicht erinnern, dafür Krämpfe gemacht zu haben...
PHP interessiert sich für die FollowSymLinks-Option von Apache nicht. PHP kann teilweise auf bestimmte Verzeichnisse nicht zugreifen, wenn die open_basedir-Option in /etc/php8/apache2/php.ini gesetzt ist.
Für die Fehlersuche ist es manchmal sinnvoll, die php-Skripte manuell zu starten:
sudo -u www-data bash cd /srv/www/htdocs/<Ziel> php phpskript.php
Björn
Hi,
die kannte ich noch nicht... ist aber nicht gesetzt. Mit sudo funzt das Script auch... trotzdem natürlich Danke, kann gut sein, dass das woanders mal aufschlägt...
ich werde wohl einen wrapper in c schreiben, der mir das so aufruft, wie es läuft und hoffen, das der nicht zuviele Ressourcen frisst, wenn er alleweil gucken muss, ob eine Abfragedatei da ist...
Hallo, vielleicht liegt es am privaten tmp-Verzeichnis von systemd? Das erstellt ja bspw. für den Apache jeweils ein privates Verzeichnis in /var/tmp und /tmp und blendet es dann für den Dienst in das Dateisystem ein. Der Apache sieht dann nicht das eigentliche /var/tmp sondern den Inhalt von bspw. /var/tmp/systemd- private-abcdefghijklmnopqrstuvwxyz123456-apache2.service-abcdef/ als /var/tmp. Viele Grüße Matthias -- Das Gesetz hat zum Schneckengang verdorben, was Adlerflug geworden wäre. (Friedrich Schiller - Die Räuber) Und der Buschfunk spielt gerade mal nichts...
participants (3)
-
Bjoern Voigt
-
Jörg Thümmler
-
Matthias Fehring