首页 文章

PHP代码未被执行,而是在页面上显示代码

提问于
浏览
258

我正在尝试在项目上执行一些PHP代码(使用Dreamweaver),但代码没有运行 .

当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到它) . Apache运行正常(我正在使用XAMPP),PHP页面正在正常打开但PHP代码没有被执行 .

有人对发生的事情有什么建议吗?

Note: 该文件已命名为 filename.php

Edit: 守则..:

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

The print

24 回答

  • 12

    在我的情况下(Apache / 2.4.34),

    取消注释特定模块后

    “LoadModule php7_module libexec / apache2 / libphp7.so”

    “/etc/apache2/httpd.conf”

    我的问题消失了 .

  • 5

    听起来您的配置有问题,以下是您可以检查的一些事项:

    • 确保PHP已正确安装并运行 . 这可能听起来很傻,但你永远不会知道 . 一种简单的检查方法是从命令行运行 php -v ,看看是否返回版本信息或任何错误 .

    • 确保在Apache的httpd.conf中列出了PHP模块 and uncommented 这应该类似于文件中的 LoadModule php5_module "c:/php/php5apache2_2.dll" . 搜索 LoadModule php ,并确保其前面没有注释( ; ) .

    • 确保Apache的httpd.conf文件中包含PHP MIME类型 . 这应该像 AddType application/x-httpd-php .php . 这告诉Apache将 .php 文件作为PHP运行 . 搜索AddType,然后确保有一个PHP条目 and that it is uncommented .

    • 确保您的文件上有 .php 扩展名,或者在第3点的MIME定义中指定的扩展名,否则它将不会以PHP身份执行 .

    • 确保您没有在PHP文件( <? )中使用short tags,默认情况下并未在所有服务器上启用它们,因此不鼓励使用它们 . 改为使用 <?php (如果你有依赖它们的代码,则使用enable short tags in your php.inishort_open_tag=On ) .

    • 确保使用 http://localhost/file.php 之类的URL通过网络服务器访问文件,而不是通过本地文件访问 file://localhost/www/file.php

    最后检查PHP manual for further setup tips .

  • 20

    php7:

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

    我在Ubuntu上运行Apache,我的问题是 /etc/apache2/mods-available/php5.conf 文件丢失了:

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

    我把它添加回来,php正确解析php文件 .

  • 4

    注意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>
    
  • 1

    我发现另一个问题导致了这个问题并且已经解决了 . 我意外地以 UTF-16 编码保存了我的脚本 . 似乎PHP5默认情况下无法识别16位编码中的 <?php 标记 .

  • 2

    我'm posting this answer because my Virtualmin/Webmin admin interface decided it was a good idea to disable my PHP engine.. took me a while to find the solution, so I thought I'与你们分享:

    此外,请务必检查与此特定主机或虚拟主机相关的任何网站配置文件都没有关闭PHP的任何php_admin_value,如下所示:

    php_admin_value engine Off
    

    如有疑问,请评论......

    # php_admin_value engine Off
    

    并重新启动您的网络服务器

  • 345

    Oh God! I just saw your posted image again, you're just opening your php file into browser. you have open is using localhost url. if you open a file directly from your directory it will not execute the php code in any case.

    use: http://locahost/index.php or http:127.0.0.1/index.php

    在你的情况下启用php短代码,你正在使用 <? 这是 <?php 的php短代码

    默认情况下,php短代码被禁用 .

    如果您是ubuntu用户,也可以使用: sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt .

  • 30

    我知道它应该听起来很傻......但很少发生 .

    检查您是否尝试执行php

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

    而不是来自

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

    ps>你可以注意到,如果你从shell写

    php info.php
    

    它用代码回答(这意味着php函数)..

  • 32

    我通过卸载XAMPP并安装WAMP解决了这个问题 . 谢谢您的帮助 .

  • 1

    这只是发生在我身上,连同服务器下载html文件,而不是处理 . 我没有在计算机上使用webserver apache一段时间,同时Ubuntu更新了原来安装的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之前 . 那好吧 .

  • 1

    我有类似的问题但在我的情况下解决方案是不同的 . 我的文件,持有PHP代码被称为 "somename.html" 改为 "somename.php" 工作正常

  • 16

    在我的ubuntu 14.04,apache 2.4,php 5.5.9安装,我尝试使用/ var / www / html(默认文档root)上的sample.php,它运行正常 . 所以问题出在我的虚拟服务器配置上 . 解决方案是在包含.php的Directory def中包含以下行:

    php_admin_flag engine on
    
  • 7

    使用以下命令检查为 php 安装的所有软件包:

    yum list installed | grep remi
    

    在您的计算机上安装所有相关的 php 软件包,尤其是 php-devel .

  • 5

    这是在我的.htaccess中

    DirectoryIndex index.html index.htm
    

    index.html包含PHP代码 . 默认情况下,PHP不会处理像htm *这样的扩展名为PHP代码的文件 .

    您可以通过将以下内容添加到.htaccess来覆盖它:

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

    对于运行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

  • 1

    我在High Sierra(OS X 10.13.5)附带的php 7.1上遇到了这个问题,编辑了 /etc/apache2/httpd.conf 以及以下更改:

    • 取消注释此行
    LoadModule php7_module libexec/apache2/libphp7.so
    
    • 最后粘贴以下内容
    <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>
    
  • 1

    我认为它显示代码而不是结果的问题是它不会转到本地主机 . 重新检查你要进入的地址 . 你要去本地文件目录还是本地主机 .

    从您发送的屏幕截图中,它将是您的计算机而不是本地主机 .

    “file:///”它应该是“localhost /”

  • 1

    重新安装 mcrypt 模块对我有用 .

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

    我有一个案例,我不小心开始在root中解开我的文件目录 . 它从我的文件夹中添加了.htaccess文件,可以阻止所有的php

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

    底线检查root上的.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
    

    这个对我有用

  • 3

    如果您使用的是Apache 2.4,请将 AddType application/x-httpd-php .php 添加到httpd.conf文件中

  • 2

    确保脚本包含

    <?php
    

    在应该执行的代码之前 . 此处 <?php 之间不应有空格 .

  • 1

    只花了几个小时试图获得 PHP 5 to run with Apache 2.4 on Windows 10 . 最后对我来说这是httpd.conf LoadModule 中的拼写错误 . 通过last answer in this apachelounge thread of denny2018提请注意写入和确切的模块路径 . 谢谢!

    经过两个晚上,我发现......我的目录写成了c :(小写)

    我有 LoadModule php5_module "c:/php/php5apache2.dll"correct for 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 . httpd.conf中的 LoadModule 行用于Apache 2.4读取

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

    目前php manual shows up c:/php/php5apache2.dll 当然需要调整 .

相关问题