scr*_*apy 7 php wordpress file-upload
编辑testme.php
/ tmp中的文件.
<?php
echo "test";
?>
Run Code Online (Sandbox Code Playgroud)
编辑一个标题为" test
上传文件"的新帖子/tmp/testme.php
,并使用网址将其发布http://home.local/wp/?p=4785
.
我想看看testme中的内容,点击它,在wordpress中弹出新窗口.
继续点击它.test
在网页中显示.
我的期望:1.
只需点击testme
测试帖一次.
2.显示testme.php
纯文本,
<?php
echo "test";
?>
Run Code Online (Sandbox Code Playgroud)
而不是执行的结果testme.php
.
test
Run Code Online (Sandbox Code Playgroud)
我根据一些材料进行配置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>
Run Code Online (Sandbox Code Playgroud)
重启apache2(在debian中构建).
sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
要打开帖子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' );
Run Code Online (Sandbox Code Playgroud)
您已经有了正确的代码 - AddType text/plain php
,这将使 Apache 将 PHP 文件(或名称以 结尾的文件.php
)视为纯文本文件。
但假设以下情况:
您已将 WordPress 安装在该/var/www/html
目录中。
PHP 文件上传到uploads
WordPress 中的默认文件夹 ( wp-content/uploads
)。
如果您将目录设置为/var/www/html/wp-content/uploads
:
<Directory /var/www/html/wp-content/uploads>
AddType text/plain php
</Directory>
Run Code Online (Sandbox Code Playgroud)
您将得到您想要的结果 - 只有该uploads
文件夹中的 PHP 文件才会被视为纯文本文件,而不是该目录中的所有 PHP 文件/var/www/html
。这解释了“要打开帖子http://home.local/wp/?p=4785
,我得到以下输出”的问题,其中该输出是文件中的代码/var/www/html/index.php
。我的意思是,您使用了<Directory /var/www/html>
,这使得 Apache 将index.php
文件视为纯文本文件,而不是执行文件中的 PHP 代码。
替代方法:使用该.htaccess
文件。
特别是如果您无法编辑或无法访问 Apache 的配置 ( .conf
) 文件。
如果该文件夹尚不存在,请.htaccess
在该文件夹中创建。uploads
然后添加AddType text/plain php
到该文件中。
我想看里面的内容
testme.php
,点击它,弹出新窗口
我确信您可以做到这一点,或者已经有了代码/解决方案,但一个简单的方法就是添加target="_blank"
到附件/文件链接。或者使用 JavaScript,您可以使用window.open()
.
并且您必须采取全面的安全措施,因为允许人们上传 PHP 文件可能会损害您的网站和/或网站用户。
归档时间: |
|
查看次数: |
284 次 |
最近记录: |