복붙노트

아파치가 PHP 파일을 표시하는 대신 다운로드하고 있습니다.

PHP

아파치가 PHP 파일을 표시하는 대신 다운로드하고 있습니다.

OS 및 서버 정보 :

이전에 php 5.3.x를 설치했지만 업그레이드를 결정했습니다. 먼저 PHP 5.3.x를 제거한 다음 PHP 5.5.1을 설치했지만 설치가 완료되면 아파치는 방금 다운로드 한 PHP 파일을 구문 분석하지 않았습니다. 나는 stackoverflow에서 비슷한 질문을 확인했지만 그들 중 누구도 지금까지 나를 도왔습니다.

필자는 httpd.conf와 php.conf에 php를 작동시켜야하지만 다음과 같은 내용을 포함해야한다는 다음 줄을 가지고 있습니다.

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php

어떤 도움을 주셔서 감사합니다. 고맙습니다.

편집하다:

php.conf에이 줄이 있습니다.

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

편집하다:

그 (것)들을 제거해서

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

아파치는 더 이상 파일을 다운로드하지 않습니다. 이제 아파치는 소스 코드를 보여주고 있지만, 일부는 소스 코드가 아닙니다. 나는 추가했다.

AddType text/html .php

운이 없다.

해결법

  1. ==============================

    1.

    PHP에 대한 올바른 AddType은 application / x-httpd-php입니다.

    AddType  application/x-httpd-php         .php
    AddType  application/x-httpd-php-source  .phps
    

    또한 PHP 모듈이로드되었는지 확인하십시오.

    LoadModule php5_module        modules/mod_php55.so
    

    아파치를 구성 할 때 다른 브라우저에서 페이지를 보려고 시도합니다. 크롬이 결과를 완강하게 캐시하고 다른 브라우저에서 소스 코드를 계속 다운로드하는 날이있었습니다.

  2. ==============================

    2.

    많은 고민 끝에 마침내 문제가 해결되었습니다.

    .php 파일을 실행하는 대신 다운로드하라는 메시지가 표시되면 여기에 완벽한 해결책이 있습니다. PHP5를 이미 설치했지만 여전히이 오류가 발생했다고 가정합니다.

    $ sudo su
    $ a2enmod php5
    

    이거 야.

    하지만 여전히 오류가 발생하는 경우 :

    Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it
    

    다음을 수행하십시오.

    파일은 모드 사용 가능으로 저장되어서는 안되지만 사용 가능한 모드에 저장되어야합니다. mods-enabled에 저장된 파일을 가리키는 mods-enabled에서 심볼릭 링크를 생성해야합니다.

    먼저 원본을 제거하십시오.

    $ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/
    

    그런 다음 심볼릭 링크를 만듭니다.

    $ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf
    

    문제가 해결되기를 바랍니다.

  3. ==============================

    3.

    오늘이 문제를 접했고 설명한 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 그래서 또 다른 가능한 원인은 다음과 같습니다.

    당신이 뭔가가 있다면

    AddHandler x-mapp-php6 .php3 .php4 .php .phtml
    

    웹 컨텐트 폴더의 .htaccess 파일에서 PHP 스크립트가 작동하지 않을 수 있습니다. 필자의 경우 서버는 x-mapp-php6 형식을 알지 못했습니다. 왜냐하면 .htaccess 파일은 웹 사이트 콘텐츠를 전송할 때 다른 웹 호스트에서 가져온 파일 이었기 때문입니다.

    .htaccess 파일에서 AddHandler 행을 제거하면 해결됩니다.

  4. ==============================

    4.

    addtype 지시문을 살펴보십시오.

    아파치가 브라우저에 .php5와 같은 확장자를 가진 스크립트를위한 문서 유형의 application / php를 보내고 있다고 말하는 것처럼 보입니다. 사실 아파치는 스크립트가 text / html을 출력하고 있다고 브라우저에 알려주고 있습니다.

    이것을 시도하십시오 :

    AddType text/html .php
    

    위의 제안에 관해서는 브라우저에 PHP 스크립트를 출력한다고 알려야합니다. 그것은 나에게 이상한 생각처럼 보였습니다. 나는 그것을 봤고 거기에 대한 토론이 꽤 있다는 것을 발견했다. 분명히 아파치가 스크립트를 실행하고 text / html을 내보내 겠지만 PHP 스크립트를 보내고 있다고 말할 수도 있고 브라우저가 특정 Mime을 인식하지 못하는 경우도 있습니다. 유형.

    브라우저 캐시를 지우는 것은 항상 좋은 생각입니다.

    도움이 필요한 경우 CentOS 5.9를 실행하는 서버에서 /etc/httpd/conf.d/php.conf 파일을 복사하는 것이 좋습니다.

    #        
    # PHP is an HTML-embedded scripting language which attempts to make it                                             
    # easy for developers to write dynamically generated webpages.                                                  
    #
    <IfModule prefork.c>
      LoadModule php5_module modules/libphp5.so
    </IfModule>
    <IfModule worker.c>
      LoadModule php5_module modules/libphp5-zts.so
    </IfModule>
    
    #
    # Cause the PHP interpreter to handle files with a .php extension.
    #
    AddHandler php5-script .php
    AddType text/html .php
    
    #
    # Add index.php to the list of files that will be served as directory
    # indexes.
    #
    DirectoryIndex index.php
    
    #
    # Uncomment the following line to allow PHP to pretty-print .phps
    # files as PHP source code:
    #
    #AddType application/x-httpd-php-source .phps
    
  5. ==============================

    5.

    이것은 PHP에 필요한 누락 된 모듈로 인해 발생할 수 있습니다. php7을 설치했다고 가정하면, 사용 가능한 php7 모듈을 검색하십시오.

    sudo apt-cache search php7-*
    

    위의 명령은 설치에 사용 가능한 모든 PHP7 모듈을 나열합니다. 모듈 설치를 시작할 수 있습니다.

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

    6.

    나는 같은 문제를 가지고있다. 아파치는 특정 웹 사이트에서 PHP 파일을 다운로드하지 않고 그냥 다운로드했다. 이 게시물과 대답을 읽었고 .htaccess 파일의 마지막 위치에이 줄이 있다는 것을 보았습니다.

    AddHandler x-mapp-php5.5  .php
    

    나는 그것에 대해 논평했으며 모든 것이 잘 작동한다.

    모두에게 감사합니다!

  7. ==============================

    7.

    5.3에서 5.4로 업그레이드 한 후에도 비슷한 문제가있었습니다. 하지만 설치 프로그램이 데비안을 사용하고 PHP 페이지를 서버에 fcgid로 사용하고 PHP5 apache / cgi 모듈을 사용하는 것과 약간 다릅니다. 그래서 업그레이드 한 후에 php5_cgi도 설치되어 fcgid 설정과 충돌하고 PHP 파일을 더 이상 실행하지 않습니다.

    아파치 모듈을 비활성화하고 아파치를 다시 시작해야했다.

    a2dismod php5_cgi
    /etc/init.d/apache2 restart
    

    php5_cgi 모듈이 작동하지 않으면 fcgid는 PHP 페이지를 다시 제공 할 수있었습니다.

  8. ==============================

    8.

    .htaccess에 다음과 같은 것이 있으면 ...     AddHandler application / x-httpd-php53 .php .php5 .php4 .php3 그런 다음 댓글을 달고 다시 시도해보십시오.

  9. ==============================

    9.

    나는 비슷한 증상을 보였지만 또 다른 해결책이있다. /etc/apache2/mods-enabled/php5.conf에는 다음과 같은 주석에 유용한 조언이있었습니다.

  10. ==============================

    10.

    이틀 동안 추적을했는데 PHP 스크립트를 잘못된 디렉토리에 넣었다.

    내 표준 우분투 설치에서 / var / www에 스크립트를 넣었습니다. 그들은 / var / www / html에 있었어야합니다.

    방금 PHP 작업을 시작 했으므로 내 솔루션이 변경된 버전과 관련이 있는지 알 수 없습니다.

  11. ==============================

    11.

    이것은 나를 위해 문제를 해결했습니다 (저는 php7을 설치했습니다) :

    sudo apt-get install libapache2-mod-php7.0

    sudo service apache2 restart

  12. ==============================

    12.

    나는이 문제가 있었다. 그것은 nginx와 apache가 모두 설치되어 있고 부팅 할 때 자동으로 시작된다는 것이 밝혀졌습니다. 문제는 nginx가 apache가 시작되지 못하게하는 http 포트에 바인딩된다는 것입니다.

  13. ==============================

    13.

    이전 버전에서 php5를 5.5.9로 업그레이드 할 때 OP와 비슷한 문제점이있었습니다. 이것은 민트 17과 함께 설치된 버전입니다.

    라이브 네트워크에 변경 사항을 업로드하기 전에 웹 사이트 변경 사항을 미리 보는 데 사용하는 로컬 네트워크의 컴퓨터에서 램프 설정을 실행하고 있습니다. 그래서 실제 사이트의 완벽한 로컬 미러를 유지합니다.

    업그레이드 후 실제 사이트에서 실행되고 완벽하게 표시되는 파일은 표시되지 않거나 로컬 시스템에 html 만 표시됩니다. PHP가 파싱되지 않았습니다. phpinfo () 명령이 작동하여 PHP가 다르게 작동하는 것을 알았습니다. 로그에 오류가 생성되지 않았습니다. 페이지 소스를 보면 나에게 실제 PHP 코드가 표시되었습니다.

    다음 코드가 포함 된 test.php 페이지를 생성했습니다.

    이것은 효과가 있었다. 그런 다음

  14. ==============================

    14.

    위의 작업이 하나도 없으면,

    줄을 주석으로 처리해라.

    SetHandler ....
    

    아파치를 사용하여 재시작

    /etc/init.d/httpd restart
    

    그것은 작동해야합니다!

  15. ==============================

    15.

    PHP56

    vim /etc/httpd/conf/httpd.conf

    LoadModule php5_module        libexec/apache/libphp5.so
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    
  16. ==============================

    16.

    나는 이런 종류의 문제가있다. 이것은 내가 그것을 해결하는 방법이다. Apache를 설치 한 후이 명령을 사용하여 PHP를 설치했습니다.

    sudo apt-get install php libapache2-mod-php
    

    제대로 실행되지만 아파치에서 .php 파일을 요청하면 PHP 스크립트를 실행하지 않고 제공됩니다.

    그런 다음 PHP가 활성화되어 있는지 확인합니다.

    $ cd /etc/apache2
    $ ls -l mods-*/*php*
    

    그러나 아무 결과도 보여주지 않았다. 설치된 PHP 패키지를 확인합니다.

    $ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
    

    내 컴퓨터에 설치된 다른 유형의 PHP 버전. 그런 다음 apt-get purge를 사용하여 이전 목록에서 일부 PHP 패키지를 제거합니다.

    sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
    

    PHP를 다시 설치합니다.

    sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
    

    PHP 모듈이로드되었는지 확인하십시오.

    $ a2query -m php7.0
    

    사용 설정되지 않은 경우 :

    $ sudo a2enmod php7.0
    

    Apache 서버를 다시 시작하십시오.

    $ sudo systemctl restart apache2
    

    마지막으로 Apache에서 PHP 프로세스를 확인합니다.

    빈 파일을 만든다.

    sudo vim /var/www/html/info.php
    

    이 내용을 info.php에 추가하고 저장하십시오.

    <?php
      phpinfo();
    ?>
    

    브라우저에서 확인하십시오.

    그것은 정확하게 나타납니다. 나는 이것이 누군가를 도울 것이라고 생각합니다.

  17. ==============================

    17.

    누군가 리눅스 환경에서 php7을 사용하고있는 경우

    php7를 활성화했는지 확인하십시오.

    sudo a2enmod php7
    

    mysql 서비스와 아파치를 다시 시작한다.

    sudo systemctl restart mysql
    sudo systemctl restart apache2
    
  18. ==============================

    18.

    또한 nginx가 실행 중이지만 PHP가 apache로 실행되도록 설정되어있을 수도 있습니다. 확인하려면 서비스 nginx status 및 service apache2 status를 실행하여 실행중인 서비스를 확인하십시오. nginx가 실행 중이고 apache가 실행되지 않는 경우 sudo service nginx stop을 실행하십시오. sudo service apache2 start 그러면 서버가 PHP 파일을 예상대로 제공합니다.

  19. ==============================

    19.

    Ok ... 나는 이미이 질문에 대한 1.000.000 개의 답변이 있음을 알고 있습니다. -하지만 적어도 6 시간의 효과적 시간을 보냈습니다. 나는 그것을 수백 번 봤는데 그것에 대해 하나의 게시물을 발견하지 못했습니다. 그래서 나는 여기서 나의 문제에 대한 해결책을 추가 할 것이라고 생각했다.

    이 두 줄을 /etc/apache2/[[SERVER-NAME].conf-file의 .conf- 파일에 주석으로 적어 둡니다.

    php_admin_value engine Off
    IPCComTimeout 31
    

    나는 그들이 무엇을하는지, 어떻게 그들이 거기에 갔는지 전혀 모른다. 그러나 그것은 .conf 파일들 모두에있다. 그리고 그 줄을 제거하고 / etc / apache2 / sites-enabled / -folder에 심볼릭 링크가 있는지 확인한 다음 index.php를 다운로드하지 않고 모든 작업을해야합니다.

    나는 VirtualMin을 우분투 16.04 VPS에 설치했다. 나는 PHP 버전 7.2로 업그레이드했다. 그 직후 우분투 버전을 업데이트하고 'Kernel Offset : Disabled'오류를 쳤습니다. 그래서 나는 최신 우분투 버전을 삭제해야만했다. - 그리고 내 OS가 다시 부팅 될 때 : 붐! 나는 그의 포스트가 말하고있는 에러를 가지고있다 : 나의 VPS의 모든 사이트에 대해, 단순히 그것을 보여주는데 대신 index.php를 다운로드했다.

    나는 모든 종류의 것을 시도했다 :

  20. ==============================

    20.

    .htaccess에 다음과 같은 내용이있는 경우

    AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm
    
  21. from https://stackoverflow.com/questions/18422140/apache-is-downloading-php-files-instead-of-displaying-them by cc-by-sa and MIT lisence