WordPress с phpMyAdmin - 404 везде - PullRequest
5 голосов
/ 29 мая 2011

Итак, я пытался внести несколько изменений в пользовательскую тему WordPress, которая вводит полный пересмотр Dashboard. Я постоянно нахожу небольшие проблемы с оригинальной темой, которые мне нужно исправить (неправильная проверка на наличие дублирующих записей при импорте новых, метаданные записей не сохраняются правильно, сообщения не сортируются по соответствующим категориям и т. Д.)

Поскольку я работал с этим, мне нужно было просматривать и изменять базу данных бесчисленное количество раз, чтобы увидеть, что тема делает с базой данных, или исправить то, что она испортила. К сожалению, мне не удалось установить phpMyAdmin, поэтому я вносил изменения, напрямую набирая SQL и вставляя его в тему в соответствующих местах, а затем создавая скрипт die(), чтобы я мог видеть вывод своего SQL.

Внезапно меня поразило, что я могу найти плагин, который интегрирует функциональность phpMyAdmin в WordPress. Поэтому я установил wp-phpMyAdmin.

Кажется, все идет хорошо, пока я не попытаюсь на самом деле DO что-нибудь. Я могу просматривать таблицы, просматривать строки и смотреть на все. Но когда я пытаюсь отредактировать строку или удалить ее, меня перенаправляют на ошибку 404, в которой говорится, что к какой-либо части phpMyAdmin, к которой я обращался (например, tbl_row_action.php), не существует. Если я сразу перехожу на эти страницы, не отправляя форму для редактирования или удаления строки, они работают нормально, и я получаю сообщение об ошибке, что мой запрос SQL был пустым.

Кто-нибудь еще испытывал это? Я действительно не могу понять точно, почему или куда он посылает 404. Это абсолютно смешно.

РЕДАКТИРОВАТЬ - Немного больше информации:

Я узнал, что я только получаю ошибку 404, когда phpMyAdmin вызывает sql.php с набором параметров sql_query

EDIT (снова) - еще одно обновление:

Ошибка 404 появляется только тогда, когда sql_query содержит действительный запрос. Просматривая sql.php (я не потратил слишком много времени на поиск, заметьте), я замечаю, что он, кажется, анализирует запрос и определяет, SELECT ing, DROP ing, DELETE ing, и т.д., чтобы они могли проверить ваши пользовательские права. Это может быть связано с этим кодом анализа.

Следующие запросы не дали мне 404:

test
SELECT test
SELECT test FROM test
SELECT test FROM post_meta
DELETE
DROP
DROP test

Следующие дали мне 404:

SELECT * FROM test
SELECT * FROM post_meta
DELETE FROM
DELETE FROM test
DELETE FROM post_meta
DROP TABLE
DROP TABLE test

БОЛЬШЕ РЕДАКТИРОВАТЬ -

Итак, в самом верху sql.php я разместил следующую строку кода:

die("Test");

Он не умирает, когда я задаю неправильные запросы, перечисленные выше. Это идет прямо к 404 сообщению. Очевидно, что это связано со скриптом перенаправления WordPress, а не с phpMyAdmin

ЗАКЛЮЧИТЕЛЬНЫЕ РЕДАКТЫ -

Я провел гораздо больше исследований и извлекал выгоду из WordPress.

Я очень подозреваю, что у меня возникла эта проблема из-за новой функции безопасности WordPress. Старые версии WordPress, по-видимому, использовались для ввода SQL в URL, что представляло ОГРОМНУЮ угрозу безопасности. В результате понятно, что они не позволят SQL проходить через URL сейчас. Непосредственно перед шаблоном значение is_404() устанавливается равным true. Он устанавливается в WP::parse_request() (который вызывается WP::main(), который вызывается wp(), который вызывается в wp-blog-header.php)

Каждый раз, когда есть подозрительный запрос SQL В ЛЮБОМ МЕСТЕ в запрашиваемом URI, меня выгоняют на страницу 404. Я хотел бы изменить это поведение, делая как можно меньше модификаций ядра WordPress. Мне нужен кто-то, кто действительно хорош с WordPress, чтобы помочь мне здесь. Я предполагаю, что существует ответ с использованием переменной $ wp_rewrite, которая содержит множество правил перезаписи URL.

Проблема окончательно обнаружена -

Для тех, кто заинтересован в том, чтобы найти этот пост, следил за ним или просто сталкивался с подобными проблемами, я, наконец, обнаружил источник 404 ошибок. Это совсем не связано с WordPress. Проблема упала на mod_security, модуль Apache, который предотвращает любые подозрительные запросы (включая запросы с SQL в URI запроса)

Всегда не забывайте правильно устанавливать настройки mod_security.

Ответы [ 2 ]

1 голос
/ 20 июня 2011

WordPress не должен мешать phpMyAdmin, так как плагин загружает его в изолированном фрейме.

В качестве одной из своих спецификаций для проекта он хочет установить на своем сервере ТОЛЬКО WordPress ...

Тем не менее плагин по-прежнему phpMyAdmin (хотя и «обернут» в пользовательском интерфейсе WordPress). Другими словами, вы уже установили его ;)

... чтобы избежать проблем с обновлением и обслуживанием другого программного обеспечения ...

«Программное обеспечение» может быть опасным термином при разговоре о веб-приложениях - это не значит, что его не следует использовать вообще , но для некоторых оно может вызывать мысли о синих экранах и ошибках во время выполнения; )

Другими словами, просто подчеркните, что PMA - это просто набор файлов на сервере - у него нет собственной базы данных, он фактически не имеет состояния и удаление просто как RMD /phpmyadmin.

... он хочет иметь возможность вносить все необходимые административные изменения с панели управления WordPress

Несмотря на замечания, которые я уже высказал, если абсолютно крайне важно, чтобы на панели инструментов был доступ к управлению базой данных, я собираюсь написать быструю альтернативу, которая использует phpMiniAdmin вместо этого (вот как я странно наткнулся на этот вопрос!), и я был бы рад поделиться с вами, чтобы вы попробовали.

0 голосов
/ 20 июня 2011

Как отметил @molnarm в комментариях, почему бы просто не удалить phpMyAdmin и подключиться к MySQL через SSH, используя что-то вроде MySQL Workbench или Sequel Pro .

У вас был бы намного более простой и быстрый способ взаимодействия с MySQL, и вы могли бы удалить кошмар phpMyAdmin.

...