Как показать загруженный файл php в виде обычного текста вместо выполнения его в WordPress? - PullRequest
0 голосов
/ 17 сентября 2018

Отредактируйте файл testme.php в /tmp.

<?php
echo  "test";
?>

Отредактируйте новый пост под названием test и загрузите файл /tmp/testme.php, опубликуйте его с URL 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 голосов
/ 24 сентября 2018

Чего ты пытаешься достичь?Кажется, вы пытаетесь получить гиперссылку, которая отображает содержимое файла PHP.Сообщения WordPress хранятся в базе данных.Итак, когда вы говорите «опубликовать», о чем вы говорите?Запись в базе данных, которая ссылается на пост WordPress или файл PHP?Если все, что вам нужно на экране - это неисполненное содержимое файла PHP, вам не следует публиковать «пост» WordPress.Что содержится в посте?Если вы говорите о том, чтобы поместить PHP-файл в качестве СОДЕРЖАНИЯ поста, это тоже было бы иначе.Вероятно, самый простой способ отобразить содержимое файла PHP - просто переименовать его в текстовый файл.

myFile.php => myFile.php.txt

0 голосов
/ 22 сентября 2018

У вас уже есть правильный код - AddType text/plain php, который заставит Apache обрабатывать PHP-файлы (или файлы, имена которых заканчиваются на .php) как текстовые файлы.

Но при условии следующего:

  • В каталоге /var/www/html установлен WordPress.

  • Файлы PHP загружаются в папку по умолчанию uploads в WordPress (wp-content/uploads).

Если установить для каталога значение /var/www/html/wp-content/uploads, например:

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

Вы получите желаемые результаты - только файлы PHPв папке uploads будут обрабатываться как текстовые файлы, а , а не все файлы PHP в каталоге /var/www/html.Это объясняет проблему с « Чтобы открыть сообщение http://home.local/wp/?p=4785, я получил следующий вывод », где этот вывод - код в файле /var/www/html/index.php.Я имею в виду, что вы использовали <Directory /var/www/html>, что заставляет Apache обрабатывать файл index.php как обычный текстовый файл вместо выполнения кода PHP в этом файле.

Альтернативный метод: используйте .htaccess file.

Особенно, если вы не можете редактировать или не имеете доступа к файлу конфигурации Apache (.conf).

  1. Create .htaccess в папке uploads, если ее там еще нет.

  2. Затем добавьте AddType text/plain php в этот файл.

Дополнительные примечания

Я хочу увидеть содержимое в testme.php, щелкните по нему, откроется новое окно

Я уверен, что вы можете сделать это или уже имеете код / ​​решение, но простой способ, просто добавьте target="_blank" к вложению / ссылке на файл .. или с помощью JavaScript вы можете использовать window.open().

И вы должны взять полный меры безопасности , так как разрешение людям загружать файлы PHP может нанести вред вашему сайту и / или пользователям вашего сайта.

...