Решение
Внимание:
Неиспользуемый код нужно сразу удалить, потому что это может быть опасно!
Не оставляйте лазейку для пытливого ума хакера!
Варианты
Выполнить код (сниппет) можно:
- В блоке
- В блоке Execute PHP модуля Devel
- На странице
- В отдельном файле
В блоке
Блок позволяет гибко ограничить доступ для разных ролей, а также выводить блок на определённых страницах или только на какой-то одной.
Недостатки метода в том, что:
- Для того, чтобы увидеть работу кода нужно сохранить блок. Если что-то нужно изменить, то в отличии от страниц, где есть предпросмотр, - блок нужно будет снова открывать и сохранять.
- Код в блоке, для которого не выставлены ограничения видимости, может сделать весь сайт недоступным. В этом случае нужно выключить блок, используя SQL-сниппет.
Для выполнения кода нужно установить формат ввода: PHP.
На странице
Недостатки:
- Для страницы нет возможности, в отличии от блока, гибко задавать права доступа и область видимости.
Преимущество страницы перед блоком в том, что:
- У страниц есть предпросмотр, который позволяет получить результат работы кода (сниппета) без сохранения документа. Это удобно тем, что можно делать отладку и коррекцию кода, а также можно вообще не сохранять документ, если код не нужен постоянно.
- Если в коде страницы оказалась ошибка, то весь сайт остаётся работоспособным, как и админ-часть, где можно просто удалить "сломанную" страницу. Код в блоке, для которого не выставлены ограничения видимости, может сделать весь сайт недоступным. В этом случае нужно выключить блок, используя SQL-сниппет.
Настройка:
- Для выполнения кода нужно вставить этот код в тело блока с обязательными тегами:
//код, который нужно выполнить... - Установить формат ввода: PHP
- Заполнить необходимые поля
- Нажать "Предпросмотр", если код не нужно использовать постоянно или "Сохранить", чтобы сохранить документ.
В блоке Execute PHP модуля Devel
Для этого способа нужен установленный модуль Devel.
Работает также как и вставка кода в блок (см. выше).
Отдельном файле
Для этого метода нужен доступ к файлам сайта.
Настройка:
- Создать файл с расширением ".php" в папке, которая видна веб-серверу
- Вставить в новый файл код:
//Если файл не в корне веб-сервера, то нужно исправить путь:
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//код, который нужно выполнить... - Сохранить файл
- Вызвать файл из браузера: http://example.com/my_code.php
- Удалить файл, если он больше не нужен, или ограничить доступ к нему в файле .htaccess.
См. рецепт Ограничение доступа к файлу cron.php.
Вывод
- Для отладки кода лучше использовать вставку в тело страницы.
- Если нужно ограничить доступ к коду - лучше использовать код в блоке.
- Файл можно использовать только, если есть доступ к файлам.
Bookmark/Search this post with











Комментарии
попробовал вариант в отдельном файле:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\drupal.site\www\1.php:2) in Z:\home\drupal.site\www\includes\bootstrap.inc on line 995
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\drupal.site\www\1.php:2) in Z:\home\drupal.site\www\includes\bootstrap.inc on line 596
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\drupal.site\www\1.php:2) in Z:\home\drupal.site\www\includes\bootstrap.inc on line 597
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\drupal.site\www\1.php:2) in Z:\home\drupal.site\www\includes\bootstrap.inc on line 598
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\drupal.site\www\1.php:2) in Z:\home\drupal.site\www\includes\bootstrap.inc on line 599
Hello!!1
Page execution time was 156.25 ms. Executed 7 queries in -29.33 milliseconds.
но код выполнился, такчто можно считать вариант рабочим) друпал 6
Это предупреждения. Их вывод можно отключить.
Кроме того, важно только первое предупреждение, а последующие вызваны первым.
Проверьте, возможно до тега <?php у вас есть какие-то символы и они отправляются в браузер ещё до отправки заголовков - именно на это он ругается...
А если нужно вызвать из подкаталога например
/forum/file.php ?
заранее спасибо, сижу, никак не могу прорваться...