• При подключении в php-скрипте, исполняемом по Cron на сервере файла ядра WP (wp-load.php) перестаёт работать любой вывод на экран (print, echo). Подскажите пожалуйста, какие могут причины стольстранного поведения скрипта? Первый раз в моей практике такое…

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • boyka1966, привет. Непонятно что за скрипт, чего добиваетесь при его выполнении и т.п., так что советы будут базовые на этот случай: а) попробуйте выполнить сброс буфера через ob_end_flush(); после подключения wp-load.php; б) при подключении wp-load.php используйте абсолютные пути; в) дебаг с перенаправлением вывода и ошибок в файл для дальнейшего анализа.

    Автор boyka1966

    (@boyka1966)

    Здравствуйте, спасибо что откликнулись.
    Пока весь скрипт состоит из подключения ядра WP, включения вывода ошибок. После этого пытаюсь вывести тестовое «Ок». Вот здесь и проблема — выводне работает, хоть тресни! А как отлаживать скрипт без возможности вывода промежуточных результатов…!?

    boyka1966,

    А как отлаживать скрипт без возможности вывода промежуточных результатов…!?

    Всё это можно делать, только цели и способы разные. Если у вас базовый скрипт с выводом тестового сообщения, напишите здесь код целиком, так будет проще и понятнее в какую сторону двигаться.

    Автор boyka1966

    (@boyka1966)

    Да сейчас всё примитивнее некуда... Вот весь скрипт (ниже). Убрал только открывающие и закрывающие теги PHP.


    //Включить сообщения об ошибках
    //ini_set('display_errors', 'On');
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);//выводить все ошибки
    //error_reporting(E_ERROR);//выводить только фатальные ошибки
    //Включить сообщения об ошибках #

    //Служебные константы
    define('WP_USE_THEMES', false); // отключает загрузку темы
    //Служебные константы #

    //Подключение API WordPress
    require_once('/home/g/gearedm/geared-motor/public_html/wp-load.php');//только ядро
    ob_end_flush();
    require_once('/home/g/gearedm/geared-motor/public_html/wp-admin/includes/taxonomy.php');
    require_once('/home/g/gearedm/geared-motor/public_html/wp-admin/includes/media.php');
    require_once('/home/g/gearedm/geared-motor/public_html/wp-admin/includes/file.php');
    require_once('/home/g/gearedm/geared-motor/public_html/wp-admin/includes/image.php');
    //Подключение API WordPress #

    echo('Ok');

    boyka1966, окей, а что видите при обращении к этому файлу и что ожидаете увидеть?

    Автор boyka1966

    (@boyka1966)

    Вижу ряд сообщений уровня Notice и Deprecated. И всё.
    А ожидаю увидеть (после них) вывод буковок

    Ok

    А этого не происходит!

    boyka1966, вы на какой версии PHP всё это запускаете и какая у вас версия WordPress?

    Автор boyka1966

    (@boyka1966)

    WP: 6.9.1
    PHP: 8.4

    boyka1966, было бы проще всего проверить работоспособность тестового кода на чистой установке, потому что на актуальных версиях PHP и WordPress как раз должно быть сообщение OK. Если нет возможности такой проверки, напишите что за Deprecated и Notice видите на экране, попробуем от этого оттолкнуться.

    Автор boyka1966

    (@boyka1966)

    На чистой установке долго и не имеет особого смысла - решать то задачу необходимо на конкретном сайте! Перечень сообщений системы ниже:



    Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the
    acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/g/gearedm/geared-motor/public_html/wp-includes/functions.php on line 5503

    Deprecated: WGZ_Views::get_template(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/clearfy/components/assets-manager/includes/classes/class-views.php on line 62

    Deprecated: WGZ_Views::print_template(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/clearfy/components/assets-manager/includes/classes/class-views.php on line 85

    Deprecated: WRIO_Views::get_template(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/robin-image-optimizer/includes/classes/class-rio-views.php on line 55

    Deprecated: WRIO_Views::print_template(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/robin-image-optimizer/includes/classes/class-rio-views.php on line 77

    Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the woocommerce domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/g/gearedm/geared-motor/public_html/wp-includes/functions.php on line 5503

    Notice: Функция _load_textdomain_just_in_time вызвана неправильно. Загрузка перевода для домена woodmart была запущена слишком рано. Обычно это индикатор того, что какой-то код в плагине или теме запускается слишком рано. Переводы должны загружаться при выполнении действия init или позже. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.7.0.) in /home/g/gearedm/geared-motor/public_html/wp-includes/functions.php on line 5503

    Deprecated: Creation of dynamic property WOODMART_Wpbcssgenerator::$_notices is deprecated in /home/g/gearedm/geared-motor/public_html/wp-content/themes/woodmart/inc/classes/Wpbcssgenerator.php on line 10

    Notice: Функция wp_enqueue_script вызвана неправильно. Скрипты и стили можно регистрировать или добавлять в очередь не раньше действий wp_enqueue_scripts, admin_enqueue_scripts или login_enqueue_scripts. Это уведомление вызвано из элемента управления custom_script. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 3.3.0.) in /home/g/gearedm/geared-motor/public_html/wp-includes/functions.php on line 5503

    Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/multiple-domain/MultipleDomain.php on line 451

    Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/g/gearedm/geared-motor/public_html/wp-content/plugins/multiple-domain/MultipleDomain.php on line 452

    Notice: ob_end_flush(): Failed to delete and flush buffer. No buffer to delete or flush in /home/g/gearedm/geared-motor/public_html/wp-content/themes/woodmart/rewrite-sity-content.php on line 1595

    boyka1966, у вас специфический набор плагинов, которые нуждаются в обновлении со стороны их разработчиков. Без этого шага вам будет проще грузить только ядро движка или прибегнуть к циганским фокусам вроде define( 'WP_INSTALLING', true );, чтобы не трогать лишний раз плагины. Дальше уже всё будет зависеть от конкретной задачи.

    Автор boyka1966

    (@boyka1966)

    Плагины, дающие предупреждения, я отключал. Не помогает…
    К сожалению, использование define(‘SHORTINIT’, true) не допустимо, т.к не позволяет использовать необходимые функции WP!
    Большое спасибо за помощь!
    В данном случае задача не сложная, не ресурсоёмкая, разовая. Я решу её путём встраивания скрипта в страницу, без использования Cron.
    А вот если такая же хрень вылезет при решении серьёзной задачи, то караул.

Просмотр 12 ответов — с 1 по 12 (всего 12)

Для ответа на тему необходимо авторизоваться.