Apache는 실행하는 대신 PHP 코드를 표시합니다.


107

최근에 내 컴퓨터에 PHP와 Apache를 설치하려고했습니다. 몇 시간 후에 설치됩니다. 모든 사람이 말하는 것처럼 httpd.conf 및 php.ini 파일을 수정했습니다. 그런 다음 간단한 PHP 스크립트를 만들었습니다.

<?php phpinfo(); ?>

그러나 그것을 실행하려고하면 실행하는 http://127.0.0.1/phpinfo.php대신 소스 코드가 표시됩니다. Apache 2, PHP 5 및 Windows Vista를 사용하고 있습니다.

편집 된 라인 :

PHP.INI :

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

phpinfo.php에서 .php 파일을 읽을 수있게 만드는 헤더를 추가 했습니까?

@Peteris 내 질문에 내 전체 스크립트가 없습니다
imulsion aug

간단한 스크립트 시도 : <?php echo "Hello world"; ?>Hello world를 표시합니까? 코드가 표시되면 @RabNawaz가 서버가 올바르게 구성되지 않았다고 말한 것입니다!

코드를 다시 표시합니다.
imulsion 2012-08-27

1
어디에서 PHP 파일에 액세스하고 있습니까? 서버에서 php 파일을 실행하려면 적절한 웹 루트 디렉토리에 파일을 넣어야합니다. 와 같은 웹 브라우저에서 액세스 http://localhost/또는http://127.0.0.1/
이브라힘 아즈 하르 아르 마르에게

답변:


90

PHP를 활성화해야합니다! 폴더를 확인 mods-enabled: 아파치 디렉토리 (기본값 /etc/apache2/라는 이름의 파일을 찾을 수 있는지를) php. 확장명은 기억 나지 않지만 .so.

또한 /var/log/apache2/error.log다른 오류가 있는지 확인 하십시오.


8
당신은 실행 한 : a2enmod PHP5
다니엘 피구에 로아에게

6
프로그래머는 더 내 아파치 디렉토리에 폴더를 mods_enabled 없습니다
imulsion

내 경우에는 @imulsion은이 아래에 / 개조 가능한 한 등 / 아파치 /
Silveri

6
php7의 경우에는해야 a2enmod php7.0했고 문제가 해결되었습니다. 어떻게 든이 게시물에 도달하는 데 하루 종일 걸렸습니다!
Rorschach

3
php에서 호출 된 파일이 없습니다. mods-enabled이제 어떻게합니까? 이 답변은 내용을 설명하지 않습니다
Black

61

와, 여기에 많은 솔루션이 있습니다! Ubuntu 16.04에서 수행 한 작업 은 다음과 같습니다 .

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart

--reinstallapt-get 에 추가 하여 나를 위해 일했습니다 . PHP 모듈 / 아파치 설치가 더러울 수 있습니다.
Glastis

이 디지털 오션의 우분투 16.04 서버 덕분에 나를 위해 일한
Sushant Bhargav에게

이것은 나에게 다음과 같은 오류를 제공합니다 : Considering conflict php5 for php7.0, Considering conflict mpm_worker for mpm_prefork등 ... 그리고 apache2 재시작 실패
mrid

당신이 얻을 경우 Considering conflict php5 for php7.2이동 /etc/apache2/mods-available및 삭제php5.*
사이먼 Epskamp

39

PHP 7 (이전 버전에도 적용될 수 있음)의 경우 다음과 같이해야합니다.

이것을 /etc/apache2/apache2.conf의 맨 아래에 추가하십시오.

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

터미널에서 실행하십시오.

sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7

그런 다음 Apache를 다시 시작하는 것을 잊지 마십시오. 변경된 내용을 알 수 있습니다.

sudo service apache2 restart

https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/ 의 요약입니다.


3
OSX El Capitan의 PHP 5.6에서이 작업을 수행해야했습니다. (스톡 아파치를 사용하지만 homebrew php56)
rfay

1
Windows에서도 작동합니다 (즉, Windows에서 터미널 명령을 실행할 필요가 없음). 끝없는 검색을 저장해 주셔서 감사합니다.
che-azeh

소스에서 설치할 때이 파일 일치가 필요했습니다. (는 config 및 확인 등은 나에게 값을 httpd.conf에서 모듈을 가능하게하지만,이 하나를 추가 didnt한다.)
user7296055

샘플 httpd.conf 파일에는 10 억 개의 주석이 있습니다. 아무도 PHP에 대한 것이없는 이유를 설명 할 수 있습니까? 드물게 사용되는 것이 아닙니다.
Danial

@Danial httpd.apache.org/support.html 에는 문서를 찾고, 버그를보고하고, 질문 할 수있는 다양한 방법이 있습니다 (예 : httpd.conf에 PHP를 사용하는 정상적인 예가없는 이유는 무엇입니까?)
RyanNerd

24

파일 열기

/etc/apache2/httpd.conf

그리고 변경

#LoadModule php5_module libexec/apache2/libphp5.so

으로

LoadModule php5_module libexec/apache2/libphp5.so

따라서 PHP 모듈로드를 해제하십시오. httpd.conf


제 경우에는 줄이 php7_module로 시작했지만 그렇지 않으면 이것은 저에게 효과적이었습니다!
b0rgBart3


6

나를 위해 일한 다른 대답. 설치하려면[sudo] apt-get install libapache2-mod-php5.X


1
저도 비슷했습니다. 관련 패키지를 찾은 다음 "sudo apt-get install libapache2-mod-php"를 설치하는 "sudo apt-cache search ^ libapache2 | grep php"를 수행했습니다. libapache2-mod-php7.0이 이미 설치되었습니다.
VectorVortec

3

위 또는 이전에 말한 것을 시도해 보았지만 (가능한 이유 일 수 있음) 코드를 실행하는 대신 여전히 코드를 표시하면 해결되지 않은 잘못된 일이 있습니다. PHP 코드에 액세스하는 데 사용한 URL 어떤 사람들은 .php 파일을 웹 브라우저로 드래그하여 PHP 코드를 실행하려고합니다. 이것은 잘못된 관행이며 이런 종류의 문제로 이어질 수 있습니다. 파일을 C : // wamp / www 폴더에 "test.php"로 저장 한 경우 다음 방법으로이 파일에 액세스해야합니다. localhost : //test.php. 이런 종류의 실수는 다음과 같은 방법으로 접근 할 때 발생합니다 : localhost : //wamp/www/test.php

내가 누군가를 도왔기를 바랍니다. o / ~ 다니엘


3

사례에서 나를 위해 일한 것을 게시하면 비정상적인 경우이지만 길을 걷는 사람에게 도움이됩니다.

내 웹 호스트가 기본값보다 높은 버전의 PHP를 사용하도록 처리기를 설정했습니다. 5.1이 있었지만 5.6을 원했기 때문에 다음과 같이했습니다.

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

내 .htaccess 파일에서.

내 사이트를 로컬에서 실행하려고 할 때 거기에 있으면 PHP 코드가 브라우저에 출력됩니다. 그것을 제거하면 문제가 해결되었습니다.


3

Apache는 Issue fixed를 실행하는 대신 PHP 코드를 표시합니다.

1. php5.6 conf 또는 php7.x conf를 열었습니다.

# 다음 명령 :

$ sudo vi /etc/apache2/mods-enabled/php5.6.conf

2. 다음 줄에 주석 달기

여기에 이미지 설명 입력

3. 서버를 다시 시작했습니다.

$ sudo 서비스 apache2 재시작

4 즐기십시오 :)


2

.htaceess 파일을 삭제 하고 시스템이 새로운 (빈 또는 기본) 파일을 생성하도록 할 수 있습니다. 추가 한 일부 행이 잘못된 문장이거나 내부에있는 다른 항목이 문제의 원인 일 수 있습니다. 그런 다음 이전 .htaccess 파일 에서 한 줄씩 추가 하여 문제의 원인을 확인할 수 있습니다.

그것은 나를 위해 일했습니다. 내 경우에는 PHP 확장을 표시하지 않도록 시스템에 지시하는 줄이 문제였습니다 ( RewriteCondRewriteRule ). 내 오래된 .htaccess 파일은 공유 서버에서 잘 작동했지만 VPS로 전환했을 때이 문제가 나타났습니다.


또한 CORS 어리 석음에 빠진 경우 : 실행 sudo a2enmod headers하고 sudo a2enmod rewrite(아파치를 다시 시작하는 것을 잊지 마십시오).
RyanNerd

2

이 스레드의 다른 사람들에게 그들의 제안에 감사드립니다. 언급 한 단계에 따라 아파치 서버가 .NET의 load파일에서 구문 오류보고를 시작할 수 없음을 발견 했습니다 /etc/apache2/mods-enabled. php7.0과 php7.1이 모두 활성화 된 것으로 나타났습니다.

a2dismod php7.0
systemctl restart apache2

PHP가 다시 올바르게 렌더링됩니다.


1

모듈 userdir이 활성화되고 사이트가 userdir (~ / public_html)에있는 경우 /etc/apache2/mods-enabled/php5.conf를 확인해야합니다. 다음 부분은 작동합니다 (Ubuntu 14.10 utopic에서).

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>

1

우분투 사용자 인 경우 아파치를 설치 한 후 새로 설치할 때 다음 명령을 실행해야합니다.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

제 경우에는 잘 작동합니다.


1

나를 위해 일한 것 :

활성 httpd.conf에서

<IfModule mime_module>
...
</IfModule>

다음이 누락되었습니다.

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

아파치를 다시 시작한 후 .php 파일이 올바르게 구문 분석됩니다.


1

위의 어느 것도 나를 위해 적용되거나 일하지 않았습니다 ... PHP7, Apache Httpd 2.2 on CentOS 6

사실은 당신이 반대해야 ... 제가 아파치 전에 (냠 모든) PHP를 설치한다 : 다음, 먼저 PHP를 항상 설치 아파치, 그리고 그것은 사실, 당신은 가능성이 누락 ... 작동 libphp7.solibphp7-zts.so/etc/httpd/modules/

PHP를 제거하지 않고도 어떻게 든 복구 할 수있었습니다. 나는 매직 라인을 추가했다 /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php 그리고 실행 :yum install php php-mysql


1

PHP7 및 Apache2.4의 경우 다음 작업 만 수행하면됩니다.

sudo vim /etc/httpd/conf/httpd.conf

맨 아래로 이동하여 다음을 삽입하십시오 (모두 단독으로).

<FilesMatch "\.*">
SetHandler application/x-httpd-php
</FilesMatch>

Apache는 이제 모든 것을 PHP로 실행합니다. html과 php 파일 만 있으면 괜찮습니다. 다른 종류의 파일이있는 경우 상황에 맞게 파일을 조정해야합니다. 나는 이것을 phpMyAdmin으로 테스트했으며 지금까지 문제가없는 것 같습니다.

모든 사람들이 여기에서 이야기하는 다른 것들은 나에게 필요하지 않았습니다. "AddType Application ....."항목을 올바른 위치에 놓았을 때 Apache는 해당 모듈이 이미로드되어 건너 뛰었다 고 알려주었습니다.

자세한 내용은 https://httpd.apache.org/docs/2.4/mod/core.html#filesmatch 에서 찾을 수 있습니다.

내 설치는 다음과 같이 완료되었습니다.

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

읽지 않았다면 https://httpd.apache.org/docs/current/howto/htaccess.html#when 도 읽어야합니다.


0

MAMP에서 $ _POST를 실행할 때도 이런 일이 발생했습니다. 모든 .ini 및 httpd 파일이 모두 올바르게 설정되었습니다. 양식 처리를하고 있고 html 문서가 있고 $ POST를 실행하는 php formhandler에 정보를 게시하는 경우 로컬이 아닌 서버를 통해 localhost에서 html 파일을 실행하고 있는지 확인하십시오.

이것은 html 문서를 실행하기 위해했던 바로 가기였습니다. 내 디렉토리에있는 html 파일을 클릭하고 웹 브라우저에서 실행하여 실제로 php가 양식에서 처리되고 있는지 확인하려면 서버를 통해 html을 실행해야합니다. 내가 간과했던 아주 간단한 프로토콜.

예:

잘못된: file:///Applications/MAMP/htdocs/form/form.html

권리: http://localhost:your port number/form/form.html

이제 제출 버튼을 클릭하면 PHP가 처리됩니다.


0

모듈의 Debian / Ubuntu 기본 구성으로 인해 동일한 문제가 발생했습니다 suphp. 그것은 포함 suPHP_Engine off은 PHP 소스가 브라우저에 표시되는 결과하는,는 / usr / share 전체에 대한. 로 비활성화하는 a2dismod suphp것이 임시 해결책이었습니다.


0

나는 같은 문제가 있었다. php 파일을 실행하면 웹 브라우저가 실행하는 대신 php 코드를 보여주었습니다. 나는 여러 번 시도했다 : wampserver64 제거 / 재설치, PHP / Apache 설정 / 모듈 주변 작업 등. 2 일 후 : 기본 조합 "ctrl +"를 눌러 메모장에서 php 파일을 실행하려고 할 때 깨달았습니다. 크롬의 경우 alt + shift + R "입니다. 내 크롬 주소 표시 줄에 "file /// C : / wamp64 / www / bla / bla .."와 같은 내 PHP 파일을 실행하려고했습니다. 그게 내 문제였습니다. localhost에서 PHP를 실행하도록 Notepad ++ 구성 페이지에 따라 변경했습니다 . . 내 문제가 해결되었습니다. 근데 2 일 후 ..


0

Xampp (apache)를 관리자로 실행합니다. Google 크롬 유형 :

localhost/<insert folder name here>/<insert file name>

즉, 생성 한 폴더가 "LearnPhp"이고 파일이 "chapter1.php"이면 다음을 입력합니다.

localhost/LearnPhp/chapter1.php

xampp를 다운로드 할 때 생성되는 htdocs 폴더의 xampp 폴더에이 폴더를 만들었습니다.


0

Debian 9 솔루션 :

touch /etc/apache2/conf-available/php.conf 

파일에 다음 줄 추가 :

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

그런 다음 다음을 실행하십시오.

a2enconf php && service apache2 restart

이것은 나를 위해 일했지만 처음에는 그렇지 않았습니다. 기본적으로 비활성화되어있는 사용자 디렉터리에서 웹 콘텐츠를 실행하고 있습니다. 이를 활성화하려면 /etc/apache2/mods-available/php7.2.conf
Tony Adams

0

PHP 버전 충돌이 발생하는 경우이를 극복하려면 아래 단계를 따르십시오.

1 단계 : Yum 목록 설치 | grep 'php'

php 5.6 및 php 7.0과 같은 여러 버전의 PHP가있는 경우이 연결이 발생합니다.

2 단계 : yum 제거 ** PHP 버전 **

3 단계 : 그런 다음 Apache를 다시 시작 /etc/init.d/httpd restart하거나service apache2 restart


0

솔루션 은 저에게 효과적이었습니다. apache2를 제거하고 다시 설치합니다. 퍼지 및 설치 후에 발생했습니다. 처음 설치하는 경우이 문제가 발생하지 않습니다.


0

위의 여러 솔루션을 시도했지만 시나리오의 수정 사항은 fpm 모듈을 설치하는 것이 었습니다.

문제와 관련이있을 수있는 php 이전에 httpd를 설치했지만 해결하기 위해 다음을 설치했습니다.

yum 모듈 설치 php : 7.2

이렇게하면 php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpm 모듈이 설치되어 다음을 통해 활성화됩니다.

systemctl 활성화-지금 php-fpm

그 시점부터 우리는 /etc/httpd/conf.d/php.conf를 기본값으로두고 httpd를 다시 시작했습니다.

서비스 httpd 다시 시작

그런 다음 모든 것이 작동했습니다.

이것이 도움이되기를 바라며, 알아내는 데 필요한 것보다 오래 걸렸습니다.


0

다음 구성 추가 /etc/apache2/apache2.conf

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

그리고 apache비아를 다시 시작하십시오.sudo service apache2 restart

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.