development

PHP 코드가 실행되지 않고 대신 코드가 페이지에 표시됩니다.

big-blog 2020. 3. 18. 08:07
반응형

PHP 코드가 실행되지 않고 대신 코드가 페이지에 표시됩니다.


Dreamweaver에서 프로젝트를 통해 PHP 코드를 실행하려고하는데 코드가 실행되고 있지 않습니다.

소스 코드를 확인하면 PHP 코드가 HTML 태그로 나타납니다 (소스 코드에서 볼 수 있음). Apache가 제대로 실행 중입니다 (XAMPP로 작업 중) .PHP 페이지가 제대로 열리고 있지만 PHP 코드가 실행되고 있지 않습니다.

누군가 무슨 일이 일어나고 있는지에 대한 제안이 있습니까?

참고 : 파일 이름은 이미filename.php

편집 : 코드 .. :

<?
include_once("/code/configs.php");
?>

인쇄


구성에 문제가있는 것 같습니다. 확인할 수있는 몇 가지 사항은 다음과 같습니다.

  1. PHP가 제대로 설치되어 실행되고 있는지 확인하십시오. 어리석게 들릴지 모르지만 결코 알 수 없습니다. 확인하는 쉬운 방법 php -v은 명령 줄에서 실행 하여 버전 정보 또는 오류를 반환하는지 확인하는 것입니다.

  2. PHP 모듈이 아파치 httpd.conf 안에 나열 되고 주석 해제 되어 있는지 확인하십시오. 이것은 LoadModule php5_module "c:/php/php5apache2_2.dll"파일 과 유사해야 합니다. 을 검색 하고 앞에 LoadModule php주석 ( ;) 이 없는지 확인하십시오 .

  3. Apache의 httpd.conf 파일에 PHP MIME 유형이 있는지 확인하십시오. 이것은 다음과 같아야 AddType application/x-httpd-php .php합니다. 이것은 아파치에게 .php파일을 PHP 로 실행하도록 지시 합니다. AddType을 검색 한 다음 PHP에 대한 항목이 있고 주석 처리가 제거 되었는지 확인 하십시오 .

  4. 파일의 .php확장자가 3 번 지점의 MIME 정의에 지정된 확장자 인지 확인하십시오 . 그렇지 않으면 PHP로 실행되지 않습니다.

  5. PHP 파일 ( ) 에서 짧은 태그사용하지 않는지 확인하십시오. 기본적 으로 모든 서버에서 활성화되지<?않으며 사용을 권장하지 않습니다. 사용 <?php하는 대신 (또는 php.ini 파일에서 짧은 태그를 사용 하여 short_open_tag=On당신이 그들에 의존하는 코드가있는 경우).

  6. http://localhost/file.php로컬 파일 액세스가 아닌 URL을 사용하여 웹 서버를 통해 파일에 액세스하고 있는지 확인하십시오.file://localhost/www/file.php

마지막으로 추가 설정 정보PHP 매뉴얼을 확인하십시오 .


php7 :

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

우분투에서 Apache를 실행 중이며 내 문제는 /etc/apache2/mods-available/php5.conf파일에 다음이 누락되었다는 것입니다.

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

나는 그것을 다시 추가했고 PHP는 PHP 파일을 올바르게 구문 분석했습니다.


PHP 7 사용자의 경우 httpd.conf 파일에 다음을 추가하십시오.

# PHP 7 specific configuration
<IfModule php7_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

이 문제를 일으키는 다른 문제를 발견하고 이미 해결했습니다. 실수로 스크립트를 UTF-16인코딩으로 저장했습니다 . PHP5는 <?php기본적으로 16 비트 인코딩의 태그를 인식하지 못하는 것 같습니다 .


내 Virtualmin / Webmin 관리 인터페이스가 PHP 엔진을 비활성화하는 것이 좋은 생각이라고 결정했기 때문에이 답변을 게시하고 있습니다. 솔루션을 찾는 데 시간이 걸렸으므로 여러분과 공유 할 것이라고 생각했습니다.

또한이 특정 호스트 또는 가상 호스트와 관련된 웹 사이트 구성 파일에 다음과 같이 PHP를 끄는 php_admin_value가 없는지 확인하십시오.

php_admin_value engine Off

의심스러운 경우 의견을 말하십시오.

# php_admin_value engine Off

그리고 웹 서버를 다시 시작하십시오.


브라우저에서 PHP 파일을 여는 중입니다. localhost url을 사용하여 열어야합니다. 디렉토리에서 직접 파일을 열면 어떤 경우에도 PHP 코드가 실행되지 않습니다.

사용 : http://locahost/index.php또는http:127.0.0.1/index.php

PHP 짧은 코드를 활성화하십시오. 귀하의 경우에는을 <?위한 PHP 짧은 코드를 사용하고 <?php있습니다. 기본적으로 PHP 단축 코드는 비활성화되어 있습니다.

또한 sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt우분투 사용자 인 경우 사용하십시오 .


어리석은 소리로 들리지만 ... 거의 발생하지 않습니다.

에서 PHP를 실행하려고하는지 확인하십시오.

**http://localhost/info.php**

에서하지

file:///var/www/info.php

ps> 셸에서 쓰면 알 수 있습니다.

php info.php 

그것은 코드로 응답합니다 (php 함수를 의미합니다.)


이것은 처리하는 대신 html 파일을 다운로드하는 서버와 함께 다시 나에게 일어났습니다. 나는 컴퓨터에서 한동안 웹 서버 아파치를 사용하지 않았으며 우분투는 원래 설치된 LTS에서 두 가지 버전보다 더 업데이트되었습니다. 지금이야

$ cat /etc/issue
Ubuntu 16.04 LTS

그래서 PHP는 다음과 같이 작동했습니다.

$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart 

웹 서버는 이제 PHP를 파싱했습니다. php7.0을 실행하기 전에 php5를 실행하기 전의 위치에서 php7.0 이후 일부 웹을 업데이트해야 할 수도 있습니다. 오 잘


XAMPP를 제거하고 WAMP를 설치하여이 문제를 해결했습니다. 도와 주셔서 감사합니다.


내 우분투 14.04, 아파치 2.4, PHP 5.5.9 설치에서 / var / www / html (기본 문서 루트)의 sample.php로 시도했지만 정상적으로 작동했습니다. 그래서 문제는 내 가상 서버 구성에있었습니다. 해결책은 .php를 포함하는 Directory def에 다음 행을 포함시키는 것입니다.

    php_admin_flag engine on

High Sierra (OS X 10.13.5)와 함께 제공되는 PHP 7.1 에서이 문제에 직면 /etc/apache2/httpd.conf하여 다음 변경 사항으로 편집 하면 도움이되었습니다.

  1. 이 줄의 주석을 해제하십시오

    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. 끝에 따라 붙여 넣기

    <IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    

나는 비슷한 문제가 있었지만 내 경우에는 해결책이 달랐다. 개최 PHP 코드가 호출되었음을 나타 내 파일 "somename.html는" 로 변경 "somename.php" 일을 잘


다음을 사용하여 PHP 용으로 설치 한 모든 패키지를 확인하십시오 .

yum list installed | grep remi

모든 관련 PHP 패키지, 특히 php-devel 을 컴퓨터에 설치하십시오.


이것은 내 .htaccess에있었습니다.

DirectoryIndex index.html index.htm

index.html에는 PHP 코드가 포함되어 있습니다. 기본적으로 PHP는 htm *와 같은 확장자를 가진 파일을 PHP 코드로 처리하지 않습니다.

.htaccess에 다음을 추가하여이를 무시할 수 있습니다.

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

PHP 7을 실행하는 LAMP를 새로 설정하려면 /etc/httpd/conf/httpd.conf 파일을 편집하십시오. 참고 : 변경하기 전에 백업해야합니다.

파일 맨 아래에 이것을 붙여 넣으십시오.

<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

그런 다음 LoadModule을 검색하고 다음 줄을 붙여 넣습니다.

LoadModule php7_module modules/libphp7.so

이 줄은 단순히 httpd에게 PHP 7 모듈을로드하도록 요청합니다.

그런 다음 httpd를 다시 시작하십시오.


스크립트에 포함되어 있는지 확인하십시오

<?php

실행되어야 할 코드 앞에. 사이에는 공백이 없어야합니다 <?php이있다.


결과 대신 코드를 표시하는 문제는 로컬 호스트로 이동하지 않는다는 것입니다. 어떤 주소로 들어오는 지 다시 확인하십시오. 로컬 파일 디렉토리 또는 로컬 호스트로 이동합니다.

전송 된 스크린 샷에서 로컬 호스트가 아닌 컴퓨터로 보내집니다.

"file : ///" "localhost /"여야합니다.


mcrypt모듈을 다시 설치하면 나에게 도움이되었습니다.

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt

실수로 루트에서 내 파일 디렉토리를 untar하기 시작한 경우가있었습니다. 내 파일 폴더에서 모든 PHP를 차단하는 .htaccess 파일을 추가했습니다.

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

결론은 루트에서 .htaccess 파일을 확인하십시오.


이와 같은 구성이있는 경우 :

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/example.com"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

httpd.conf에서 다음 줄 주석 해제

LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

그것은 나를 위해 작동


AddType application/x-httpd-php .phpApache 2.4를 사용중인 경우 httpd.conf 파일에 추가


Windows 10에서 PHP 5를 Apache 2.4와 함께 실행 하는 데 몇 시간을 보냈습니다 . 마지막으로 httpd.conf 의 오타였습니다 LoadModule. denny2018의이 스레드에서 마지막 답변 통해 작성 및 정확한 모듈 경로에주의를 기울 십시오 . 감사합니다!

이틀 밤 후에 나는 발견했다 ... 나의 디렉토리는 쓰여졌다 c:(소문자)

내가 가지고 LoadModule php5_module "c:/php/php5apache2.dll"있지만 아파치 2.4에 대한 올바른이 있습니다 :

LoadModule php5_module "C:/php/php5apache2_4.dll"

그래서 나는 또한 _4이전 ( 아파치 2.4 ) 놓쳤다 . 나를 위해 일한 전체 스 니펫 :

# PHP
LoadModule php5_module "C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

방금 PHP 7을 시도했습니다 . LoadModule라인 을 httpd.conf 아파치 2.4 읽기

LoadModule php7_module "C:/php/php7apache2_4.dll"

현재 PHP 매뉴얼은 c:/php/php5apache2.dll 조정해야 할 과정을 보여줍니다 .


제 경우에는 (Apache / 2.4.34)

특정 모듈의 주석을 해제 한 후

"LoadModule php7_module libexec / apache2 / libphp7.so"

...에서

"/etc/apache2/httpd.conf"

내 문제는 사라졌다.


/ var / www / html /에 넣은 파일은 예제가 아닌 경우 .php for example example.php가 있어야하지만 작동하지 않지만 example.php로 변경하면 작동합니다.


우리가 같은 페이지에 있다면

sudo apt-get install php -y sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y

Apache2에서 PHP 7.2 FPM을 활성화하려면 다음을 수행하십시오.

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

업데이트 2 : Apache가 렌더링 대신 .php 파일을 다운로드 함

그 후, 나는 위의 문제에 직면했다. 이와 비슷한 질문 있습니다.

왜 그런지 모르겠지만 /var/www/html/루트 폴더의 .php 파일에서만 발생했습니다 . 하위 디렉토리에는 모든 것이 정상이었습니다. (예를 들어 워드 프레스와 phpmyadmin이 잘 작동했습니다)

그래서 여기 내 해결책이 있습니다. PHP 모듈을 사용하기로 결정했습니다. 그래서 나는이 명령을 실행했다 :

a2enmod php7.2

하지만이 오류가 발생했습니다 :

php7.2의 mpm_prefork 종속성 고려 : 충돌 고려 mpm_prefork의 mpm_event : 오류 : mpm_event 모듈이 사용 가능합니다. 충돌로 인해 진행할 수 없습니다. 먼저 비활성화해야합니다! mpm_prefork에 대한 mpm_worker 충돌 고려 : 오류 : php7.2에 대한 mpm_prefork 종속성을 사용할 수 없습니다.

그래서 다음 명령을 실행하여 mpm을 비활성화하기로 결정했습니다.

sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event

그런 다음 아파치를 다시 시작하십시오.

systemctl restart apache2

그런 다음 php7.2 (설치된 버전)를 활성화하십시오.

sudo a2enmod php7.2

지금은 모든 것이 잘 작동합니다.

참고 : https://stackoverflow.com/questions/5121495/php-code-is-not-being-executed-instead-code-shows-on-the-page

반응형