Как правильно использовать runSnippet в modx api?

Сильно не пинайте.

На сайте есть форма, при отправке Ajax отправляет на php данные на проверку. Пытаюсь вызвать сниппет phpthumbof

php

<?php
// Подключаем modx api
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';

....

$options = "w=100&h=100&zc=1&far=C&q=95";
$image = $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER["SERVER_NAME"].'/user_upload/'.$fileName; // тут все правильно
$userImage = $modx->runSnippet('phpthumbof', array('input' => $image, 'options' => $options)); // комментируя эту строку никаких ошибок не появляется

echo json_encode(['error' => '<img src="'.$userImage.'" alt="">'], JSON_UNESCAPED_UNICODE);
exit;
....
При сабмите появляется ошибка

{"readyState":4,"responseText":"","status":500,"statusText":"error"}
blackseabreathe
27 января 2021, 16:17
modx.pro
1 519
0

Комментарии: 11

Наумов Алексей
27 января 2021, 17:28
0
Может phpthumbof скармливать не ссылку на картинку, а локальный путь к ней? Относительно корня сайта.
    blackseabreathe
    27 января 2021, 17:35
    0
    Простите, локальный путь как понять? Сейчас ссылка такая —
    https://mysite.ru/user_upload/imageName.jpg
      Наумов Алексей
      27 января 2021, 17:36
      0
      $image = '/user_upload/'.$fileName;
        blackseabreathe
        27 января 2021, 17:38
        0
        пробовал, та же ошибка,

        $image = $_SERVER['DOCUMENT_ROOT'].'/user_upload/'.$fileName;
        та же история
    Артур Шевченко
    28 января 2021, 00:27
    0
    Я проверил это код в консоли, всё сработало, может ошибка не в нём?
      blackseabreathe
      28 января 2021, 11:27
      0
      Здравствуйте, имеете в виду компонент console? Дело в том, что я запуская эту же команду runSnippet, таким же способом только внутри сниппета и там тоже все работает, ума уже не приложу что не так.
        Артур Шевченко
        28 января 2021, 11:31
        0
        А вы проверяли переменные перед запуском runSnippet, в $image точно корректная строка?
          blackseabreathe
          28 января 2021, 11:44
          0
          К сожалению, да, там ссылка на картинку. И абсолютную пробовал и локальную
      Роман
      29 января 2021, 11:41
      0
      Попробуйте в опциях оставить только длину и ширину. Обязательно укажите локальную ссылку:
      $image = $_SERVER['DOCUMENT_ROOT'] . '/user_upload/' . $fileName;
      А так у вас серверная ошибка, смотрите логи, на крайняк попробуйте установить pThumb и попробуйте через него генерировать изображения.
        blackseabreathe
        29 января 2021, 13:17
        0
        $image = $_SERVER['DOCUMENT_ROOT'] . '/user_upload/' . $fileName;
        — так тоже пытался сделать, установил pthumb. В логах php ошибка

        PHP Fatal error: Uncaught Error: Call to a member function runSnippet() on null in /home/…/public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php:225\nStack trace:\n#0 /home/…public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php(248): tryUpload(Array)\n#1 {main}\n thrown in /home/…/public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php on line 225, referer https://site.com/sign-up?
        tryUpload() ф-ия, где я аытаюсь запустить runSnippet. runSnippet как раз строка №225

        Еще в начале ф-ии tryUpload() написал
        global $modx;
        на всякий случай.

        Как можно проверить инициализировался ли и работает ли $modx object?
          blackseabreathe
          29 января 2021, 13:19
          0
          tryUpload — вообще выглядит так tryUpload($file), а также попытался передать аргумент $modx tryUpload($file, $modx) — та же ошибка
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11