16.04로 업그레이드하세요. php7이 브라우저에서 작동하지 않습니다

16.04로 업그레이드하세요. php7이 브라우저에서 작동하지 않습니다

방금 14.10에서 16.04로 업그레이드했는데 Apache에서 PHP 7을 구성하는 방법을 잘 모르겠습니다. 마지막 줄의 주석 처리를 제거하고 apache2를 다시 시작했으며 변경 사항이 없도록 php7.0.conf 파일을 수정했습니다.

PHP를 허용하려면 apache2 설정을 변경해야 합니까?

PHP는 명령줄에서 작동하므로 PHP가 제대로 설치되었다고 확신합니다.

또한 phpadmin에서 mbstring이 누락되었다는 오류가 발생합니다.

답변1

이전과 마찬가지로 Apache용 PHP를 설치해야 합니다.

로부터서버 가이드:

sudo apt install php libapache2-mod-php

해당 명령은 PHP와 Apache 2 PHP 모듈을 설치합니다. 이전과 같이 Apache를 구성하기만 하면 됩니다( sudo a2enmod php7.0제 생각에는 모듈이 켜질 것입니다).


문제 mbstring가 비슷합니다. 해당 확장 프로그램을 설치해야 합니다.

sudo apt install php7.0-mbstring

다른 누락된 모듈의 경우에도 설치해야 하는 유사한 항목이 있습니다.

답변2

서버에서 실행되도록 php7을 구성하려면 몇 가지 구성을 수행해야 합니다.

1. 흔적이 있는지 확인하십시오.php/php5

터미널 Ctrl+ Alt+ 를 열고 T다음을 수행합니다.

cd /etc/apache2/mods-enabled
ls -la

출력은~ 아니다php5.conf또는 이 포함되어 있지만 php5.load, 포함된 경우 다음을 수행하세요.

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf

이제 대신 php7.0.conf에 and를 추가하세요 php7.0.load.

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load

출력은 ls -la php*다음과 같아야 합니다.

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load

모듈을 다룬 후 이제 디렉토리로 이동합니다 /etc/apache2/conf-enabled. 여기에서도 php/php5의 흔적을 제거하십시오.sudo rm <name>

그런 다음 필요한 경우 다음을 수행하십시오.

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf

출력은 ls -la php*다음과 같아야 합니다.

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf

2. Apache2 다시 시작

Apache를 다시 시작하기 전에 Apache를 정리한 error.log다음 다시 시작하십시오.

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

이제 error.log발행하여 확인하십시오 cat /var/log/apache2/error.log | less(less를 통해 파이핑하면 쉽게 위아래로 스크롤할 수 있고 q출력이 종료됩니다).

당신이 error.log많은 것을 포함하고 있다면 (그리고 말 그대로더미of) 일부는 MIBS not found다음을 수행합니다.

sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

다시 확인하면 error.log이제 3줄만 포함되어야 합니다.

[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'

이제 php7.0이 포함된 Apache가 올바르게 구성되었습니다.

답변3

이 문제도 발생했습니다.

모든 PHP를 삭제하고 php7을 다시 설치하는 데 도움이 되었습니다.

필요한 것은 다음과 같습니다.

sudo apt-get purge php*

php7은 삭제되고 나중에 다시 설치하면 됩니다.

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

답변4

이 문제에 대해 제가 찾은 해결책은 short_open_tag에 대한 기본 PHP.INI 설정이었습니다. 기본적으로 이는 '끄기'로 설정되어 있습니다. 내 PHP 코드는 다음으로 시작되었습니다.

   <?

대신에

   <?php

short_open_tag를 활성화하고(php.ini에서 'Off'를 'On'으로 변경) 아파치 서버를 재설정하면( sudo service apache2 restart) PHP가 다시 살아납니다.

관련 정보