PHPコードは実行されていませんが、コードはページに表示されます


320

(Dreamweaverを使用して)プロジェクトでいくつかのPHPコードを実行しようとしていますが、コードが実行されていません。

ソースコードを確認すると、PHPコードがHTMLタグとして表示されています(ソースコードで確認できます)。Apacheは適切に実行されています(XAMPPを使用しています)。PHPページは適切に開かれていますが、PHPコードが実行されていません。

誰かが何が起こっているのかについての提案がありますか?

注:ファイルの名前はすでにfilename.php

編集: コード..:

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

プリント


44
<?代わりに短いタグを使用しています<?phpか?
Dan Grossman

28
短いタグを使用しないでください。(<?)。それらは非推奨であり、実際には多くの場所で機能しないため、完全に不要です。3つのキーストロークを保存することは、コードが実行されるサーバーのおそらく半分で失敗する可能性があるため、有効な理由ではありません。
モプシド2015

10
@mopsyd短いタグが廃止されたのはどこですか?ので、予めご了承ください短いタグは同じではありません短いエコータグ、および短いエコータグは関係なく、PHP 5.4以降デフォルトでサポートされているshort_open_tag設定。
カイルアンダーソン

5
私は短いタグが短いエコータグではないことを知っています。そのため、コメントで話していることを指定しました。これを書いている時点では、php 6リリースでは廃止予定のフラグが付けられていましたが、それ以降は明らかに変更されています。多くのサーバーで無効にされているため、コードの移植性が大幅に低下するという問題が依然として存在します。これは<?=、サーバー設定に関係なくphp 5.4以降で正常に動作する短いエコータグ()には適用されません。
mopsyd 2016年

3
短いタグについてのばかげた話。長いタグはひどくて醜いです。10年間のphpプログラミングで問題が発生したことはありません。それらはほとんど決して問題ではありません
Danial

回答:


418

設定に問題があるようです。確認できることがいくつかあります:

  1. PHPがインストールされ、正しく実行されていることを確認してください。これは愚かに聞こえるかもしれませんが、あなたは決して知りません。確認する簡単な方法はphp -v、コマンドラインから実行して、バージョン情報やエラーが返されるかどうかを確認することです。

  2. PHPモジュールがリストされていて、Apacheのhttpd.conf内でコメントが外されていることを確認してください。これはLoadModule php5_module "c:/php/php5apache2_2.dll"ファイル内のようなものです。を検索しLoadModule php、その;前にコメント()がないことを確認します。

  3. Apacheのhttpd.confファイルにPHP MIMEタイプが含まれていることを確認してください。これはのようになりますAddType application/x-httpd-php .php。これは、Apacheに.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マニュアルでセットアップのヒントを確認します


14
理由はわかりませんが、PHP 5.3.15のインストーラーは行を追加しませんAddType application/x-httpd-php .php。どうもありがとう!!
MatuDuke

7
@shmeeps:短いタグが廃止されたことをどこで見ましたか?私はいくつかの検索を実行しましたが、それらに対する推奨事項のみを見つけることができ、非推奨については何もありません。配布されるアプリケーションの場合は、ホスティングサーバーで有効になっていない場合は<?phpを使用することをお勧めしますが、サーバーを完全に制御できるアプリの場合は、使用しません。それらを使用しない理由を参照してください。
ClarkeyBoy 2013年

3
ポイントno 6は私のために働きました..ローカルアクセスはapacheサーバーを使用しません
KawaiKx

6
ポイント2は私にとって安全な方法で機能しましたapt-get purge apache2; apt-get install apache2 libapache-mod-php5
ulkas 2014

1
@full_prog_full .php内容を含む拡張子が付いたファイルをアップロードしてみ<?php echo("Success"); ?>て、Webブラウザからファイルにアクセスした結果、関連付けられたPHPコードなしで「成功」が表示されるかどうかを確認します。
shmeeps

61

php7:

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

24
このコードスニペットは、問題解決する方法理由の説明を含む質問を解決する可能性がありますが、投稿の品質を向上させるのに役立ちます。あなたが今尋ねている人だけでなく、あなたが将来の読者のための質問に答えていることを忘れないでください!回答を編集して説明を追加し、適用される制限と前提を示してください。
Toby Speight 2017

4
この回答はLinuxに関連しており、topicstarterは明らかにWindowsを使用しています。
Raymond Nijland 2017

3
@RaymondNijlandは真実ですが、これは正規のものであり、この質問を見つけて、1時間以上のトラブルシューティングの後に私を救いました。
グース

方法と理由:これは、PHP7がmakeスクリプトでデフォルトのfast-CGIサービスを構成していない場合に発生します。sudo a2enmod proxy_fcgi setenvif3つの新しいmodを作成します/mods-available/proxy.conf proxy_fcgi.load proxy.load同様に、構成sudo a2enconf php7.0-fpmファイルを作成します。/conf-available/php7.0-fpm.confこれが完了すると、Apache2はPHP7モジュールを高速CGIサービスとして実行できます。
Talvi Watia

33

UbuntuでApacheを実行してい/etc/apache2/mods-available/php5.confますが、私の問題はファイルに次のものが欠けていることでした:

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

私はそれを再び追加し、phpはphpファイルを正しく解析していました。


31

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>

4
この問題で他の人を助けるためだけに。このhttpd.confファイルは/etc/apache2/httpd.conf、Ubuntuを使用している場合apache2.conf、PHP7用に変更する必要があるのと同じディレクトリにあります。
Ahmed Sagarwala

23

この問題の原因となっている別の問題を発見し、既に解決しました。スクリプトをUTF-16エンコードで誤って保存しました。PHP5は<?phpデフォルトで16ビットエンコーディングのタグを認識できないようです。


18

私のVirtualmin / Webmin管理インターフェースが私のPHPエンジンを無効にすることは良いアイデアであると判断したので、この回答を投稿します。解決策を見つけるのにしばらく時間がかかりました。

また、次のように、この特定のホストまたは仮想ホストに関連するWebサイト構成ファイルに、PHPをオフにするphp_admin_valueが含まれていないことを確認してください。

php_admin_value engine Off

疑問がある場合はコメントしてください...

# php_admin_value engine Off

そして、ウェブサーバーを再起動します。


1
これらの構成設定は正確にはどこにありますか?
cronoklee

2
@cronokleeのhttpd.confのvHost設定。既存のホストの場合、webminでApache構成を編集する必要があります。今後のホストについては、virtualmin>サーバーテンプレート> Apache Webサイトにアクセスしてください。いずれにせよ、これはfastcgiほど安全ではありません-virtualminのデフォルトです。したがって、正しいアプローチは、たとえばファイルのアクセス許可が原因である可能性があるなど、fcgiが機能しない理由をトラブルシューティングすることです。
Sheepy 16

あなたは、Apacheのバージョンを使用している場合、httpd.confを持っていないという表情で/etc/apache2/mods-enabled/php7.confphp5.conf
サム・Malayek

:特定の構成設定の場所に関する疑問に、あなたは常に(この場合は例えば)次のように入力して、あなたが探しているものを見つけるためにgrepを使用することができたときsudo grep php_admin_value /etc/* -R
ヘンリー・バンMegen

17

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、ubuntuユーザーの場合も使用してください。


1
ファイルを含めるだけのときにmcryptが必要なのはなぜですか?この質問は古く、短いタグの問題は私の質問のトップコメントでも16回言及されていることに注意してください。
Gui

1
私は自分の解決策を共有するだけで、同じエラーに直面し、mcryptのこのコマンドを実行した後、問題は解決しました あなたも試すことができます。
Hasan Baig

デフォルトでは、phpショートコードが有効になっています。short_open_tag =(デフォルト値= ON)でPHP 5.6で
zond

これは私の問題でした、私のvirtualmin / apache構成は127.0.0.2でしたが、ブラウザに外部IPアドレスを入れていました。v/ a構成を更新し、現在は機能しています
Hayden Thring

libapache2-mod-php7.3がありませんでした。
dxvargas

8

ばかげているように聞こえるはずですが...まれにしか起こりません。

からphpを実行しようとしているのかどうかを確認してください

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

からではなく

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

ps>シェルから書いた場合、

php info.php 

コードで応答します(php関数を意味します)。


PHPは正常に動作します(コマンドラインを使用して確認)。しかし、URLを使用してファイルにアクセスすると、PHPコードが表示されます。
muaaz 2015年

8

これは、サーバーが処理するのではなく、htmlファイルをダウンロードするのと同様に、私に再び起こりました。私はコンピューター上でしばらくWebサーバーアパッチを使用していませんでしたが、その間にUbuntuは最初にインストールされたLTSからさらに2つのバージョンのように更新されました。今です

$ cat /etc/issue
Ubuntu 16.04 LTS

したがって、phpは次のように機能しました:

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

ウェブサーバーは現在、phpを解析しています。おそらく、php5を実行する前と同じ場所でphp7.0が実行されているため、一部のWebを更新する必要があります。しかたがない。


5

XAMPPをアンインストールし、WAMPをインストールすることでこれを解決しました。助けてくれてありがとう。


私はxamppですが、正常に動作します。phpコード@Gui
Pie

5

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>

同じように、plsはWamp 3バージョンと同じエラーを提案できますか。wamp 3には/etc/apache2/httpd.confフォルダパスがありません。@ AamirR
Gem

これは私のために働いた!!! 鉱山はもっと奇妙な問題でした。PHPをレンダリングしたファイルと、コードを表示しなかったファイルがあります。
sjw0525

4

私のubuntu 14.04、apache 2.4、php 5.5.9のインストールでは、/ var / www / html(デフォルトのドキュメントルート)でsample.phpを試してみましたが、問題なく動作しました。したがって、問題は私の仮想サーバーの構成にありました。解決策は、.phpを含むDirectory defに次の行を含めることでした。

    php_admin_flag engine on

私の仮想サーバーのhttpd.confにあるApacheファイルのこの行をどこに追加すればよいですか?私はWebminを使用しています
suresh pareek 2017

4

スクリプトが含まれていることを確認してください

<?php

実行するコードの前。間にスペースがあってはならない<?php、このインチ


3

私は同様の問題を抱えていましたが、私の場合は解決策が異なりました。手持ちのPHPコードが呼び出されたことを私のファイル「somename.htmlは、」 それを変更し、「somename.php」働いていた罰金


これで解決しました。サーバーが.htmlファイルでphpを実行するかどうか、または実行するphpの行があるときにファイルの末尾を常に.phpに変更する必要があるかどうかを誰かが知っていますか?
full_prog_full

サーバーの設定に依存します。ほとんどの場合、anyfile.htmlに存在するphpコードが実行されます。そうでない場合は、変更できますが、idk how:P
Netrus

3

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を再起動します


3

次のコマンドを使用して、インストールしたすべてのパッケージのphpを確認します。

yum list installed | grep remi

関連するすべてのphpパッケージ、特にphp-develをマシンにインストールします。


2

これは私の.htaccessにありました

DirectoryIndex index.html index.htm

index.htmlにはPHPコードが含まれていました。デフォルトでは、PHPはhtm *などの拡張子を持つファイルをPHPコードとして処理しません。

.htaccessに以下を追加することで、これをオーバーライドできます。

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

1

結果の代わりにコードが表示されている問題は、ローカルホストに送信されないことです。入力するアドレスを再確認します。ローカルファイルディレクトリまたはローカルホストに移動します。

あなたが送ったスクリーンショットから、それはローカルホストではなくあなたのコンピュータに行きます。

「file:///」は「localhost /」である必要があります


1

mcryptモジュールの再インストールは私にとってはうまくいきました。

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

私のシステムでPHPを適切に構成していなかったためか、正直に言ったのですが、同じ問題について尋ねた質問は、この質問と重複しているため、ここでしか答えられませんでした。なぜ反対票なのかしら。
bg

この回答はLinuxに関連しており、topicstarterは明らかにWindowsを使用しています
Raymond Nijland

1

ルートのファイルディレクトリの展開を誤って開始したというケースがありました。それはすべての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ファイルを確認します。


1

このような設定がある場合:

<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

わたしにはできる


1

AddType application/x-httpd-php .phpApache 2.4を使用している場合は、httpd.confファイルに追加します


1

PHP 5をWindows 10のApache 2.4で実行するために何時間も費やしただけです。最後に、それはhttpd.confの タイプミスでしたLoadModuledenny2018のこのapacheloungeスレッドの最後の回答までの記述と正確なモジュールパスに注意を引きました。ありがとうございました!

2泊した後、私は発見しました...私のディレクトリは書き込まれましたc:(小文字)

私は持っていましたLoadModule php5_module "c:/php/php5apache2.dll"、Apache 2.4では正しいです:

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

そのため、_4以前も見逃しました(apache 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を試しました。Apache 2.4のhttpd.confに次LoadModule行があります

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

現在、phpマニュアルには c:/php/php5apache2.dll、もちろん調整が必要なものが表示されます。


1

私の場合(Apache / 2.4.34)、

特定のモジュールのコメントを外した後

「LoadModule php7_module libexec / apache2 / libphp7.so」

から

「/etc/apache2/httpd.conf」

私の問題はなくなった。


1

同じページにいる場合は、次のようにします

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ファイルをダウンロードする

その後、私は上記の問題に直面しました。このような同様の質問があります

理由はわかりませんが、.phpファイルでのみ発生しました /var/www/html/ルートフォルダー内の。サブディレクトリはすべて問題ありませんでした。(たとえば、wordpressと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

次に、Apacheを再起動します。

systemctl restart apache2

次に、php7.2(私のインストール済みバージョン)を有効にします。

sudo a2enmod php7.2

現在、すべてが正常に動作しています。


1

この問題の別の考えられる原因は、UserDirモジュールから「ユーザーディレクトリ」でスクリプトを実行しようとしていることである可能性があります。ユーザーディレクトリでのPHPスクリプトの実行は、デフォルトでは無効になっています。スクリプトがpublic_htmlホームフォルダーのディレクトリにあり、そこからアクセスしようとすると、この問題が発生します。http://localhost/~your_username

これを修正するには、を開きます/etc/apache2/mods-enabled/php7.2.conf。下部にあるタグブロックをコメント化または削除する必要があります。

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

-1

/ var / www / html /に置いたファイルは、example.php、たとえばexample.phpである必要があります。これが例では機能していませんが、example.phpに変更すると機能します。

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