php in apache aktivieren

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Guten Abend

Ich bin eine absoluter Neuling in PHP.

Wie aktiviere ich PHP in osx catalina Version 10.15.4

php -v ergibt Version 7.3
apache läuft

Mit local:8080 wird index.html aufgerufen:

HTML:
<html>
  <body>
    <h1>It works!</h1>
    <h3>file: usr/local/var/www/index.html</h3>
    <?php
      echo " PHP script!";
    ?>
  </body>
</html>
'It works' und 'file: usr/local/var/www/index.html' werden angezeigt, aber "PHP script!" nicht.

Was mache ich falsch?

Bin dankbar für jede Hilfe.
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Bin etwas weitergekommen, anscheinend habe ich das falsche httpd.config bearbeitet.
Mit usr/local/etc/httpd.config kann ich index.html auf User/Sites setzen. Allerdings, wenn ich die Zeile
'LoadModule php7_module libexec/apache2/libphp7.so' einsetze erhalte ich beim restart von Apache die Meldung, dass das File nicht geladen werden kann.
 
Zuletzt bearbeitet:

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Ich komme nicht weiter. Ich habe das /etc/apache2/httpd.conf file sicher dreimal exakt nach der Anleitung von Sven angepasst.
Das index.php enthält <?php phpinfo(); ?>.
Rufe ich im Browser http://localhost auf kommt die Meldung: Safari konnte keine Verbindung aufbauen
Rufe ich im Browsers http://localhost:8080 wird immer das index.html im Verzeichnis "/usr/local/var/www/index.html" aufgerufen. Aber nicht jenes in meinem Users/Christoph/Sites Verzeichnis.
Ich stehe komplett auf dem Schlauch und bin völlig Ratlos.
Die Apacheversion ist: 2.4.41
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
Ich komme nicht weiter. Ich habe das /etc/apache2/httpd.conf file sicher dreimal exakt nach der Anleitung von Sven angepasst.
Das index.php enthält <?php phpinfo(); ?>.
Rufe ich im Browser http://localhost auf kommt die Meldung: Safari konnte keine Verbindung aufbauen
Rufe ich im Browsers http://localhost:8080 wird immer das index.html im Verzeichnis "/usr/local/var/www/index.html" aufgerufen. Aber nicht jenes in meinem Users/Christoph/Sites Verzeichnis.
Ich stehe komplett auf dem Schlauch und bin völlig Ratlos.
Die Apacheversion ist: 2.4.41
Hast du den letzten Schritt evtl. vergessen?
Denn der dient dazu, dass du den 'document root' setzen kannst, damit bsw. 'Users/Christoph/Sites' dann gefunden wird –
was augenscheinlich soweit dein letztes Problem sein dürfte.
Damit dieser Ordner automatisch verwendet wird, editiert man erneut die Apache-Konfiguration wie oben beschrieben im Terminal.
Man such nach DocumentRoot und ändert die folgenden beiden Zeilen

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
in
DocumentRoot "/Users/Christoph/Sites"
<Directory "/Users/Christoph/Sites">
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Habe ich so gesetzt.
Editiere ich das File /usr/local/etc/httpd.conf, dann geht er zumindest in das Verzeichnis Users/Christoph/Sites.
Aber PHP wird nicht aktiviert.
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
Du hast mitbekommen, dass du die index-Datei mit .php deklarieren solltest – und nicht mit Endung .html ?

Also > index.php > nicht index.html

PHP wird mit der Dateiendung .php "angesprochen" – für .html müsstest du sonst das PHP "includen"
und dann wird das anders geschrieben, als dieses dein php-Snippet: <?php echo " PHP script!"; ?>

Alternativlos: bei allen getätigten Apache-Einstellung abschliessend den Apache neustarten > "sudo apachectl restart"
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Das File hat den Namen index.php. "sudo apachectl restart" mache ich nach jeder Änderung.
Was hat es mit den beiden httpd files
/usr/local/etc/httpd.conf und /etc/apache2/httpd.conf
auf sich?
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
/etc/apache2/httpd.conf
System-Apache bzw. der "default apache" > bereits vorinstalliert und aktiv

/usr/local/etc/httpd.conf
Möglicher eigener Apache zum Installieren und konfigurieren – mittels bsw. "homebrew"

Das ist 'die Mutter" > /etc/apache2/httpd.conf
Das ist 'das Kind' > /usr/local/etc/httpd.conf
…falls du unter 'local' nicht einen kompletten eigenen Apache installierst – da du dafür den 'system-apache' erstmal deaktivierst.

Installierst du keinen eigenen Apache, dann gelten die Einstellungen des 'System-Apache'.
Mit und über den 'local' kannst du bsw. mirroring oder individuelle Änderungen betreiben.

Du hast deinen 'documentRoot' bisher in der localen httpd.conf geändert –
ändere den auch mal im systemeigenen 'default apache' > also > /etc/apache2/httpd.conf
Da du ja den 'system-apache' benutzt.

Hier hast du mal zum Einlesen: Mapping URLs to Filesystem Locations
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Danke für den link,
Ursprünglich habe ich die Einstellungen bei /etc/apache2/httpd.conf gemacht. Da alle Anleitungen sich auf diese beziehen. Das hatte gar keinen Einfluss.
Wie deaktiviere ich 'das Kind'. Ich denke dort liegt mein das Problem.
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
Schau dir das nochmal an:
https://serverfault.com/questions/161529/how-to-change-document-root-for-apache2-in-mac-os-x

Evtl. gibst du den vhost noch an: private/etc/apache2/extra/httpd-vhosts.conf
Code:
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Users/Christoph/Sites"
    ServerName 127.0.0.1
    ServerAlias localhost
    ErrorLog "/private/var/log/apache2/localhost-error_log"
    CustomLog "/private/var/log/apache2/localhost-access_log" common
</VirtualHost>
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
@Chris62
Ich habe es mal nachvollzogen und so geht es: ( iMac Sierra 10.12.6 )

Zuerst legst du dir einen Ordner in deinem Benutzerverzeichnis (Finder: Tastenkombination ⇧ + ⌘ + H) an: Ordnername > Sites
In diesen "Sites"- Ordner legst du eine Text-Datei namens "index.php" > Inhalt: <?php phpinfo(); ?>

Terminal:
01. Apache starten sudo apachectl start
Wenn du jetzt im Browser http://localhost eingibst, siehst du "It works!" vom System-Apachen

Die config des System-Apachen via Terminal einstellen:
02. config öffnen /etc/apache2/httpd.conf

Mit crtl+w sucht man nach: php
#LoadModule php7_module libexec/apache2/libphp7.so
…ändern in: (Raute # vorne weg)
LoadModule php7_module libexec/apache2/libphp7.so

Mit crtl+w sucht man nach: rewrite_module
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
…ändern in: (Raute # vorne weg)
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Mit crtl+w sucht man nach: DocumentRoot

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">

…ändern in:

DocumentRoot "/Users/Christoph/Sites"
<Directory "/Users/Christoph/Sites">


Dann kannst du noch den Apache Benutzer auf dich setzen**:
Mit crtl+w sucht man nach: User/Group
Code:
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
…ändern in:
Code:
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User Christoph
Group staff
^** falls du dann später erneut die httpd.conf bearbeiten willst, aber "Permission denied" sein sollte, dann:
sudo nano -w +114 /etc/apache2/httpd.conf
…und mit deinem Passwort bestätigen.

htaccess aktivieren:
Mit crtl+w sucht man nach: htaccess
Code:
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None
…ändern in:
Code:
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All
Speichern der httpd.conf mit > ctrl+o
Editor beenden mit > ctrl+x
Apache neu starten > sudo apachectl restart

fertig. :teeth:

Jetzt solltest du im Browser bei: http://localhost die php Infos sehen.

edit:
Falls du noch Fragen haben solltest – habe weiter noch:
- mysql installiert
- Sequel Pro installiert
- php 7.3 installiert
- eine Datenbank angelegt und eine Wordpress Website local in "Sites" reingeclont
- php.ini aktualisiert (preg_match(): JIT compilation failed: no more memory > Find pcre.jit and change ;pcre.jit=1 to pcre.jit=0)

Läuft jetzt gut.
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Es gibt offensichtlich Unterschiede zwischen Catalina und den vorherigen Versionen. Das Problem habe ich nun definitiv lokalisiert.
Beim Aufstarten von Apache wird das File /usr/local/etc/httpd.conf angesprochen. Die Module liegen dort im Verzeichnis lib/httpd/modules/ dort fehlt libphp7.so.

Ich keine Ahnung wie ich Apache dazu bringen kann das /etc/apache2/hpttd.conf File zu verwenden.
Nun habe ich eine ganze Woche Zeit verplempert, die Suchmaschine hat auch nicht weitergeholfen und jetzt bin ich nur noch frustriert.
Danke trotzdem für Deine Hilfe.
Ach ja, http://localhost funktioniert nur, wenn ich die Ports angebe also http://localhost:8080.
 

Difool

Frontend Admin
Mitglied seit
18.03.2004
Beiträge
11.403
Es gibt offensichtlich Unterschiede zwischen Catalina und den vorherigen Versionen. Das Problem habe ich nun definitiv lokalisiert.
Beim Aufstarten von Apache wird das File /usr/local/etc/httpd.conf angesprochen. Die Module liegen dort im Verzeichnis lib/httpd/modules/ dort fehlt libphp7.so.

Ich keine Ahnung wie ich Apache dazu bringen kann das /etc/apache2/hpttd.conf File zu verwenden.
Nun habe ich eine ganze Woche Zeit verplempert, die Suchmaschine hat auch nicht weitergeholfen und jetzt bin ich nur noch frustriert.
Danke trotzdem für Deine Hilfe.
Ach ja, http://localhost funktioniert nur, wenn ich die Ports angebe also http://localhost:8080.
Jupp, haste recht dass es in Catalina etwas anders läuft – php7 ist aber dabei:
https://jasonmccreary.me/articles/install-apache-php-mysql-mac-os-x-catalina/

Alternativ probiere sonst auch > http://127.0.0.1

enable-php-catalina.png
 

Chris62

Mitglied
Thread Starter
Mitglied seit
17.09.2007
Beiträge
109
Ich kenne diesen Link. Das hat auch nichts gebracht.
http://127.0.0.1 ist nichts anderes als http://localhost und hat den gleichen Effekt