如何将上传的php文件显示为纯文本而不是在wordpress中执行?

时间:2018-09-17 07:04:51

标签: php wordpress file-upload

在/ tmp中编辑testme.php文件。

<?php
echo  "test";
?>

编辑标题为test的新帖子并上传文件/tmp/testme.php,并使用网址http://home.local/wp/?p=4785发布。
enter image description here

我想在testme中查看内容,单击它,然后在wordpress中弹出新窗口。 enter image description here

继续单击它。test显示在网页中。

我的期望:
1.只需在测试帖子中单击testme一次。
2.将testme.php显示为纯文本

<?php
echo  "test";
?>

代替执行testme.php的结果。

test

我根据一些材料show php file as plain text in apache进行配置。

sudo vim /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    ServerName www.home.local
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            allow from all
            php_flag engine off
            AddType text/plain php
        </Directory>
</VirtualHost>

重新启动apache2(在Debian中构建)。

sudo systemctl restart apache2

要打开帖子http://home.local/wp/?p=4785,我在网页中得到以下输出:

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

2 个答案:

答案 0 :(得分:3)

您已经有了正确的代码-AddType text/plain php,这将使Apache将PHP文件(或名称以.php结尾的文件)视为纯文本文件。

但是假设以下条件:

  • 您已经在/var/www/html目录中安装了WordPress。

  • PHP文件已上传到WordPress(uploads)中默认的wp-content/uploads文件夹。

如果您将目录设置为/var/www/html/wp-content/uploads,如下所示:

<Directory /var/www/html/wp-content/uploads>
  AddType text/plain php
</Directory>

您将获得所需的结果-仅将uploads文件夹中的PHP文件视为纯文本文件,而将{{1}中的所有PHP文件视为 } 目录。这解释了“ 要打开帖子/var/www/html,我得到以下输出”的问题,其中该输出是文件http://home.local/wp/?p=4785中的代码。我的意思是,您使用了/var/www/html/index.php,这使Apache将<Directory /var/www/html>文件视为纯文本文件,而不是执行文件中的PHP代码。

替代方法:使用index.php文件。

尤其是如果您无法编辑或无法访问Apache的配置(.htaccess)文件。

  1. .conf文件夹中创建.htaccess(如果尚未存在)。

  2. 然后在该文件中添加uploads

附加说明

  

我想查看AddType text/plain php中的内容,单击它,弹出新窗口

我确定您可以做到这一点,或者已经有了代码/解决方案,但是一个简单的方法是将testme.php添加到附件/文件链接中。或者使用JavaScript,您可以使用{{3 }}。

并且您必须采取全面的安全性措施,因为允许人们上传PHP文件可能会损害您的网站和/或您的网站用户。

答案 1 :(得分:0)

您要完成什么?似乎您正在尝试获取显示PHP文件内容的超链接。 WordPress帖子存储在数据库中。因此,当您说“发布”时,您在说什么?指向WordPress帖子或PHP文件的数据库条目?如果您只想在屏幕上显示PHP文件的未执行内容,则不应该发布WordPress“帖子”。帖子中包含什么?如果您正在谈论将PHP文件作为帖子的内容,那也将是另一回事。显示PHP文件内容的最简单方法可能就是将其重命名为文本文件。

myFile.php => myFile.php.txt