Właśnie zaktualizowałem wersję z 14.10 do 16.04 i nie jestem pewien, jak skonfigurować PHP 7 w apache. Zmodyfikowałem plik php7.0.conf, aby odkomentować ostatnie linie, zrestartowałem apache2 i nie wprowadziłem żadnych zmian.
Czy muszę zmienić ustawienia apache2, aby umożliwić php?
PHP działa z wiersza poleceń, więc jestem pewien, że php jest poprawnie zainstalowany.
Dodatkowo pojawia się błąd na phpadmin, informujący, że brakuje mbstring.
php
polecenie) jest prostopadły do innych interfejsów SAP SAPI (apache2, FPM, CGI, ...), więc działający wiersz poleceń PHP nie mówi nic o działaniu PHP na serwerze HTTP.sudo apt-get install php-mbstring
(kto by pomyślał, prawda?)Odpowiedzi:
Tak jak poprzednio, musisz zainstalować PHP dla Apache.
Z Przewodnika po serwerze :
To polecenie zainstaluje PHP i moduł Apache 2 PHP. Po prostu skonfiguruj Apache jak poprzednio (
sudo a2enmod php7.0
myślę, że włączy moduł).Twój
mbstring
problem jest podobny - musisz zainstalować to rozszerzenie:W przypadku innych brakujących modułów trzeba będzie również zainstalować podobne rzeczy.
źródło
sudo a2enmod php7.0
(a przynajmniej tak postanowiłem przez wyłączenie i ponowne włączenie na moim komputerze). Ciekawe, otrzymałem ten komunikat:Considering conflict php5 for php7.0: Enabling module php7.0.
sudo a2enmod php
nie zadziała, próbowałem. Jednaksudo a2enmod php7.0
będzie działać.Aby skonfigurować php7 do pracy z serwerem, musisz wykonać konfigurację:
1. Upewnij się, że usunąłeś wszelkie ślady
php/php5
Otwórz terminal Ctrl+ Alt+ Ti:
Wyjście powinno nie zawierają żadnych
php5.conf
albophp5.load
, ale jeśli tak się stanie, należy wykonać następujące czynności:Teraz dodaj
php7.0.conf
iphp7.0.load
zamiast:Dane wyjściowe
ls -la php*
powinny wyglądać następująco:Po zajęciu się modułami przechodzimy teraz do
/etc/apache2/conf-enabled
katalogu. Usuń również wszelkie ślady php / php5 tutajsudo rm <name>
W razie potrzeby wykonaj:
Dane wyjściowe
ls -la php*
powinny wyglądać następująco:2. Ponowne uruchamianie Apache2
Przed ponownym uruchomieniem Apache wyczyść Apache,
error.log
a następnie uruchom ponownie:Teraz sprawdź
error.log
, wydająccat /var/log/apache2/error.log | less
(przeciąganie przez less umożliwia łatwe przewijanie w górę i w dół,q
wyjście z wyjścia).Jeśli twój
error.log
zawiera wiele (a dosłownie mam na myśli kupę ), niektóre z nichMIBS not found
wykonują następujące czynności:Sprawdź ponownie,
error.log
że teraz powinno zawierać tylko 3 linie:Twój Apache z php7.0 powinien być teraz poprawnie skonfigurowany.
źródło
a2enmod
ia2dismod
zamiast ręcznie majstrować przy linkach wmods-available
/mods-enabled
(podobniea2enconf
ia2disconf
dlaconf-{available,enabled}
).a2enmod
ia2dismod
zapamiętać stan modułów w wewnętrznym rejestrze pakietu apache2, więc co / usuwania linków ręcznie może uczynić system złamany dla przyszłych uaktualnień jako skrypty uaktualniania patrzy na stan tej wewnętrznej bazie danych.Mam również ten problem.
Pomogło mi to usunąć wszystkie PHP i ponownie zainstalować php7.
Potrzebne było tylko:
php7 zostanie usunięty, a następnie ponownie zainstalowany:
źródło
sudo apt-get purge php*
spowoduje usunięcie twojego phpMyAdmina, jeśli go masz.Im mój przypadek nie tylko php nie działał, ale phpmyadmin również robiłem krok po kroku w ten sposób
A następnie:
W ostatnim wierszu dodaję
Include /etc/phpmyadmin/apache.conf
To rozwiązuje wszystkie problemy
źródło
Rozwiązaniem, które znalazłem dla tego problemu, było domyślne ustawienie PHP.INI dla short_open_tag. Domyślnie jest to ustawione na „Off”. Mój kod PHP zaczął
zamiast
Jeśli włączony, short_open_tag (zmieniając „Off” na „On” w moim php.ini) i resetuje serwer apache (
sudo service apache2 restart
), a PHP wrócił do życia.źródło
https://wiki.archlinux.org/index.php/Apache_HTTP_Server
źródło
Ja również mogłem pomyślnie uruchamiać skrypty php z linii poleceń na Ubuntu 16.04, ale nie w żadnej przeglądarce. Próbując rozwiązać problem wyczyściłem swoje istniejące kopie zarówno php7.0, jak i apache2. Następnie przeinstalowałem zarówno z linii poleceń, jak i bibliotekę php apache2. Frustracja pojawiła się, gdy próbowałem uruchomić „a2enmod php7.0”, co poinformowało mnie, że moduł php7.0 nie istnieje, mimo że po raz kolejny byłem w stanie uruchomić skrypty php z linii poleceń. Instynkt się uruchomił. Otwierając Synaptic, odkryłem, że kiedy instalowałem bibliotekę php apache2 z wiersza poleceń, instalowałem tylko libapache2-mod-php7.0 i zapomniałem również zainstalować „wrapper”, libapache2-mod- php, bez którego ten pierwszy nie będzie działał.
źródło