Apache2 - PHP und SSL funktionieren nicht - wo ist das Log?

francwalter

Aktives Mitglied
Thread Starter
Dabei seit
25.04.2008
Beiträge
953
Reaktionspunkte
39
Hallo
ich hatte einen funktionierenden aber etwas älteren apache2 vom System, nämlich von OS 10.15.7 (mit Patch, weil mein MBP so alt ist, siehe Signatur).
PHP ging noch die Version 7.3.8 über so eine Installation (php-install.liip.ch) aber kein PHP8.

Nun habe ich komplett umgestellt, Apache und PHP über brew, aktuelle Version 2.4.54_1 und PHP 8.1 aber ich kriege es nicht zum Laufen.
Ich habe mit:
Bash:
f@MacBook-Pro:/usr/local/etc/httpd$
which httpd
/usr/local/bin/httpd
f@MacBook-Pro:/usr/local/etc/httpd$httpd -t
Syntax OK
Die Syntaxfehler erfolgreich alle raus gekriegt, aber wenn ich http://localhost/index.php - mit einfach einem Aufruf auf die phpinfo - aufrufe kommt eine weiße Seite.

Im access_log steht dann:
Bash:
127.0.0.1 - - [18/Nov/2022:16:22:41 +0100] "GET /index.php HTTP/1.1" 200 20
Im error_log steht gar nichts dazu.
In der Konsole auch nichts was mir weiter helfen würde.

Mit SSL ähnliches Spiel, da kriege ich (bei https://localhost) den Fehler: Verbindung fehlgeschlagen.
ich denke ich habe es richtig (anlehnend an die alte Konfiguration) eingestellt, offenbar aber nicht, weiß aber da auch nicht woran es liegt.
Den apache2 kann ich zwar ohne Fehler neu starten:
Bash:
f@MacBook-Pro:/usr/local/var/www$ brew services restart httpd
Stopping `httpd`... (might take a while)
==> Successfully stopped `httpd` (label: homebrew.mxcl.httpd)
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
und die index.html geht auch, aber nicht PHP und SSL.

Wo finde ich dazu ein Logfile? So was muss es doch geben!?

Danke für Tipps.
frank
 
Ich habe es gefunden, woran es liegt!
Ich habe in der Aktivitätsanzeige gesehen, dass die httpd Prozesse alle vom Besitzer _www (und einer von root) waren, aber gar nicht von f (f bin ich, also brew).
Ich habe alle abgeschossen, dann den Apache als Benutzer f noch mal gestartet und siehe da, es geht! PHP und SSL, beides!
Aber so was muss man doch auch in irgendeinem Log finden! Brew hat da keine anderen als das error_log und access_log, stand dort natürlich nichts drin, weil der Apache ja gar nicht unter brew lief. Warum er sich allerdings unter Benutzer f neu starten ließ ohne Fehler, aber dennoch als _www lief verstehe ich nicht.

Beim Neustart des OS wird offenbar der alte Apache noch vom System gestartet und gar nicht der brew-Apache.
Ich weiß halt noch nicht, wie ich den System-Apache deaktivieren kann.
 
Da hatte ich zuerst gesucht, aber nichts gefunden, das ist nicht aktiviert:

1668791949756.png


Und mit dem launchctl geht es auch nicht:

Code:
# launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
 
Es muss mit launchctl gehen.
Falsche Datei/Syntax.

Probier mal
sudo apachectl stop
Mit dem richtigen apachtctl, also dem vom System, nicht homebrew.
 
Der "richtige" scheint der in /usr/sbin/ zu sein, aber:
Code:
# sudo /usr/sbin/apachectl stop            
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
Ich vermute, ich habe irgendwas irgendwann mal selbst konfiguriert, selbst installiert oder so und jetzt ist das OS nicht mehr zuständig :(
Ist ja schon eine Weile im Betrieb mein Mac, seit Ende 2009! Nie neu aufgesetzt, nur immer wieder aktualisiert, am Schluss nur noch mit diesem Patch.
 
apache2ctl könnte es sein, weil die den 1er durch den 2 ersetzt haben.
Was wohl auch für die plist gilt.
Schon mal in das Verzeichnis geguckt?
 
Sonderbar:
Code:
root@MacBook:/System/Library/LaunchDaemons# ls -al org.apache*
-rw-r--r-- 1 root wheel 626 Jun  6  2020 org.apache.httpd.plist
root@MacBook:/System/Library/LaunchDaemons# launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
Was stimmt denn da nicht, der Service (org.apache.httpd.plist) ist doch da!
 
Mit XCode wird es als disabled angezeigt:
1668860350234.png

Und in der Aktivitätsanzeige sehe ich aber als übergeordneter Prozess den launchd:

1668860822112.png

1668859885931.png

Ob ich die plist Datei einfach mal umbenennen soll?
Also etwa:
mv /System/Library/LaunchDaemons/org.apache.httpd.plist /System/Library/LaunchDaemons/org.apache.httpd.plist.bak

Also den System-apachectl kann ich jedenfalls nicht umbenennen:
Code:
root@MacBook:/usr/sbin# ls -al apachectl
-rwxr-xr-x 1 root wheel 3824 Jun  6  2020 apachectl
root@MacBook:/usr/sbin# mv apachectl apachectl.bak
mv: Abort trap: 6
root@MacBook:/usr/sbin# which apachectl
/usr/local/bin/apachectl
Sonderbar, dass ich als root nicht umbenennen kann.
Aber der apachectl der mit which gefunden wird ist immerhin der von brew.
 
Zuletzt bearbeitet:
Mach doch mal
launchctl list
Das zeigt an was läuft.

Einfach stoppen statt unload?

Aber die Prozessanzeige sagt doch es ist dein brew apache.
 
  • Gefällt mir
Reaktionen: francwalter und dg2rbf
launchctl list - hui ist das viel, musste es auf Pastebin kopieren, hier überschritt es die 10 Milliarden erlaubten Zeichen:

launchctl list: https://pastebin.com/wJsQTyNK

Aber komisch:
Bash:
root@MacBook:~# launchctl list | grep "httpd"
133    0    homebrew.mxcl.httpd
root@MacBook:~# launchctl list | grep "org"
-    0    org.cindori.TEAuth
-    0    org.gpgtools.gpgmail.uuid-patcher
-    1    org.wireshark.XQuartzFixer
-    0    org.cups.cupsd
-    0    org.wireshark.ChmodBPF
115    0    org.macports.mariadb-server
-    0    org.macosforge.xquartz.privileged_startx

Kein System-Apache dabei. Nur der von brew. Warum startet der denn als root und _www ???
Ja, die Prozessanzeige sagte (zuvor) zwar der brew Apache ist es, nach einem Systemneustart ist es aber dann leider wieder so (also root und _www):

1668868015562.png
 
Zuletzt bearbeitet von einem Moderator:
Ich erwartete es unter f.
Funktionieren tat es ja erst, wenn ich es als Benutzer "f" noch mal starte.
Ich dachte, brew startet den Apache ja auch als f und nicht als _www.
Ich hatte daher auch das Webroot auf f.staff gesetzt, statt auf _www._www
Möglicherweise habe ich das Pferd damit von hinten aufgezäumt.

Falls nach einem OS Start der launchctl den brew-Apache als _www (und root) startet, muss ich das Webroot wieder auf _www._www setzen.
Das probiere ich jetzt mal...
 
Weil es root für port 80 braucht...
Und _www ist der MacOS User für den Server.
Unter was würdest du den denn erwarten?
DANKE!!! Ich glaube das war der entscheidende Tipp für mich :)
Jetzt geht es also, PHP 8.1.12 geht und SSL auch (mit dem alten Zertifikat das ich früher mal erstellt hatte).

Ich glaube mein Krampf war, dass ich dachte, dass es unter Benutzer f laufen müsste.
Ich hatte anfangs mal als root den Befehl:
Bash:
brew services restart httpd
ausgeführt, danach gehörten ein paar Binaries dem root, das war natürlich nichts, da hat mein Korks angefangen, glaube ich.
Als Benutzer f kann ich den Befehl jetzt problemlos ausführen und als root mache ich:
Bash:
/usr/local/bin/apachectl restart
wenn ich den Apache neustarten muss. Das geht. Ich hatte vorher auch ein Alias noch auf den alten /usr/sbin/apachectl das hatte wohl auch Probleme gemacht.
Jetzt starte ich die Kiste noch mal und hoffe dass es dann immer noch geht...
... (EDIT): geht :)

Im Firefox hatte ich übrigens ziemlich am Anfang mal:
network.stricttransportsecurity.preloadlist
auf FALSE gestellt, weil der dann bei localhost von alleine auf https://localhost gesprungen war (und mein SSL noch nicht ging).
Zudem hatte ich mit browser.fixup.fallback-to-https und browser.urlbar.autoFill auch auf FALSE experimentiert, letzteres dann aber wieder zurück gesetzt.
Leider geht Xdebug jetzt nicht mehr, dazu habe ich einen separaten Thread aufgemacht:

Xdebug mit brew - pecl funktioniert nicht

 
Zuletzt bearbeitet:
Zurück
Oben Unten