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私のスクリプト全体が私の質問に含まれていません
受験2012

簡単なスクリプトを試してください:<?php echo "Hello world"; ?>Hello worldが表示されますか?それがコードを表示する場合、@ RabNawazがサーバーが正しく構成されていないと言った方法です!

単に

1
あなたはどこからあなたのphpファイルにアクセスしていますか?サーバーでphpファイルを実行するには、ファイルを適切なWebルートディレクトリに配置する必要があることに注意してください。http://localhost/または、Webブラウザーで次のようにアクセスしますhttp://127.0.0.1/
Ibrahim Azhar Armar 2012

回答:


90

PHPを有効にする必要があります!mods-enabledApacheディレクトリ(デフォルト:)内のフォルダをチェックして、/etc/apache2/という名前のファイルがあるかどうかを確認しますphp。拡張機能は覚えていませんが、そうだと思います.so

また/var/log/apache2/error.log、他のエラーがないかどうかを確認してください。


8
実行しましたか:a2enmod php5
Daniel Figueroa

6
私のapacheディレクトリにmods_enabledフォルダーがない
imulsion 2012

@imulsion私の場合、/ etc / apache2 /の下でmods対応でした
Silveri 2013年

6
私のphp7の場合、私はしなければならなかったa2enmod php7.0、それは私の問題を解決しました。どういうわけかこの投稿に到達するために丸一日かかりました!
ロールシャッハ2016

3
で呼び出されるファイルはありませんphpmods-enabled、今何ですか?この回答では説明がありません
ブラック

60

うわー、ここにたくさんの解決策があります!これが私が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モジュール/ Apacheのインストールが汚れていた可能性があります。
グラスティス2017年

これは私にとってDigital OceanのUbuntu 16.04サーバーで機能しました。ありがとう
Sushant Bhargav

:これは私に次のエラーを与えるConsidering conflict php5 for php7.0Considering 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でこれを行わなければなりませんでした。(ストックApacheを使用するが、自家製のphp56)
rfay

1
Windowsでも動作します(Windowsで端末コマンドを実行する必要がないことを意味します)無限の検索を保存してくれてありがとう。
che-azeh 2017

ソースからインストールする場合、このファイルマッチが必要でした。(configやmakeなどにより、httpd.confのモジュールが有効になりますが、これは追加されていません。)
user7296055

サンプルのhttpd.confファイルには10億のコメントがあります。phpがない理由を誰かが説明できますか?めったに使用されないものではありません。
Danial

@Danial httpd.apache.org/support.htmlには、ドキュメントの検索、バグの報告、質問(httpd.confでのPHPの
正しい

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-cache search ^ libapache2 | grep php」を実行して関連するパッケージを見つけ、「sudo apt-get install libapache2-mod-php」をインストールしました。libapache2-mod-php7.0はすでにインストールされています。
VectorVortec 2018

3

上記または以前に伝えられたことを試してみて(考えられる理由です)、それでもコードが実行されるのではなく表示される場合は、対処されていない問題が1つあります。PHPコードへのアクセスに使用したURL。一部の人々は、.phpファイルをWebブラウザーにドラッグするだけでphpコードを実行しようとします。これは間違った方法であり、この種の問題につながる可能性があります。C:// wamp / wwwフォルダーに「test.php」としてファイルを保存した場合は、localhost://test.phpのようにこのファイルにアクセスする必要があります。この方法でアクセスすると、この種のミスが発生します。localhost://wamp/www/test.php

私が誰かを手伝ってくれることを願っています。o /〜ダニエル


3

万が一のためにうまくいったことを投稿することは、異常なケースですが、将来の誰かを助けます。

ハンドラーを設定して、Webホストがデフォルトよりも高いバージョンのphpを使用するように強制しました。5.1がありましたが、5.6が欲しかったので、次のようにしました。

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

私の.htaccessファイル。

私のサイトをローカルで実行しようとしたときに、そこにあると、phpコードがブラウザーに出力されました。それを取り除くことで問題は解決しました。


3

ApacheはIssueを実行する代わりにPHPコードを表示する

1. php5.6 confまたはphp7.x confを開きました

#次のコマンド:

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

2.次の行にコメント

ここに画像の説明を入力してください

3.サーバーを再起動しました

$ sudo service apache2 restart

4お楽しみください:)


2

.htaceessファイルを削除して、システムに新しい(空白または基本)ファイルを作成させることができます。追加した一部の行が誤ったステートメントであるか、内部の何かが問題を引き起こしている可能性があります。次に、古い.htaccessファイルから1行ずつ追加して、問題の原因を確認できます。

それでうまくいきました。php拡張機能を表示しないようにマシンに指示する行は、私の場合問題でしたRewriteCondおよびRewriteRule)。私の古い.htaccessファイルは共有サーバーで問題なく動作しましたが、VPSに切り替えたときにこの問題が発生しました。


また、CORSの愚かさに遭遇した場合:実行sudo a2enmod headersしてsudo a2enmod rewrite(Apacheを再起動することを忘れないでください)。
RyanNerd 2016年

2

彼らの提案をこのスレッドで他の人に感謝します。上記の手順に従って、Apacheサーバーがの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

ubuntuユーザーの場合、apacheのインストール後、新規インストールで次のコマンドを実行する必要があります

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

Apacheを再起動すると、.phpファイルが正しく解析されます。


1

上記のいずれも適用または機能しませんでした... CentOS 6上のPHP7、Apache Httpd 2.2

実際には、私は、Apacheより前のPHP(全てのyumで)インストールされている...あなたは逆の操作を行う必要があります。常にPHP、その後、最初にApacheをインストールし、それが動作します...確かに、あなたは可能性が不足しているlibphp7.solibphp7-zts.so/etc/httpd/modules/

PHPをアンインストールしなくても、とにかく回復できました。私は魔法の行を追加しました/etc/httpd/conf/httpd.confAddType 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に情報を投稿している場合は、ローカルだけでなく、ローカルホストからサーバーを介してhtmlファイルを実行していることを確認してください。

これは、ディレクトリ内のhtmlファイルをクリックしてWebブラウザーで起動するだけで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は/ usr / share全体が含まれており、その結果、phpソースがブラウザーに表示されていました。での非アクティブ化a2dismod suphpは暫定的なソリューションでした。


0

私も同じ問題を抱えていました。PHPファイルを実行すると、Webブラウザーに実行する代わりにPHPコードが表示されました。私は何度も試しました:wampserver64のアンインストール/再インストール、PHP / Apache設定/モジュールの回避など。2日後:デフォルトの組み合わせであるctrl +クロムの場合はalt + shift + R "。それは私のクロムファイルのアドレスバーで「file /// C:/ wamp64 / www / bla / bla ..」のような私のphpファイルを実行しようとしていました。それが私の問題でした。ローカルホストでPHPを実行するようにNotepad ++を設定するページに従って変更を加えましたか?。私の問題は解決しました。しかし、2日後。


0

管理者としてXampp(apache)を実行します。Google Chromeタイプ:

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
トニー・アダムス

0

場合によっては、phpのバージョンの競合が発生すると、それが発生します。これを克服するには、以下の手順に従ってください。

ステップ1:Yumリストをインストールする| grep 'php'

php 5.6やphp 7.0のような複数のバージョンのphpがある場合、この矛盾が発生します

ステップ2:yum削除** PHPバージョン**

ステップ3:次に、apapcheを再起動する/etc/init.d/httpd restartか、service apache2 restart


0

この解決策は私にとってうまくいきました。apache2を削除して再インストールしました。パージとインストール後に発生しました。最初のインストールの場合、この問題に直面することはありません。


0

上記の解決策をいくつか試しましたが、このシナリオでの修正はfpm-moduleをインストールすることでした。

問題に関係がある可能性があるphpの前にhttpdをインストールしましたが、解決するために以下をインストールしました:

yumモジュールインストールphp:7.2

これにより、php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpmモジュールがインストールされ、次のようにして有効になります。

systemctl enable --now php-fpm

その時点から、/ etc / httpd / conf.d / php.confをデフォルトのままにして、httpdを再起動しました

サービスhttpd再起動

その後、すべてが機能しました。

これが役立つことを願って、理解する必要があるよりも長い時間がかかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.