Задание Cron на SSH-сервере Unix: кодировка UTF-8?

Работая в PHP 5, я попробовал следующие две команды для загрузки из строки ISO-8859-1 в базу данных UTF-8, которая ссылается на веб-страницы UTF-8:

$data[] = utf8_encode((string)$child);

… или же:

$data[] = convertToUtf8((string)$child);

function convertToUtf8($text) {
//  cURL('http://'.$url);

preg_match('/<meta.*?charset=(|\")(.*?)("|\")/i', $html, $matches);

$charset = $matches[2];

if($charset)
return mb_convert_encoding($text, 'UTF-8', $charset);
else
return $text;
}

Если я выполняю сценарий PHP напрямую, получая доступ к файлу из браузера, любой из этих вариантов работает как шарм: импортированный «é» — это его симпатичная французская сущность. ОДНАКО, когда я пытаюсь выполнить тот же сценарий из SSH-терминала Unix (cron job ИЛИ командная строка), он не преобразует код, поэтому «é» отображается как «Ã ©».

Есть идеи?? Я попытался удалить задание cron и заменить скрипт, чтобы убедиться, что код проходил. Это сводит с ума!

Обновление — решение

Оказывается, эта конкретная функциональность требует более поздней версии PHP. Выполнение его в терминале с помощью следующей команды (и написание команды как таковой в задании cron) решает проблему:

php5.4 xmluploader.php

0

Решение

Что ж, по пути мне, конечно, пришлось изучить некоторые идеи кодирования, но в конце концов, решение было довольно смущающим.

Я выполнял работу, набрав

php myjob.php

Это не было началом, потому что версия по умолчанию на моем сервере была слишком примитивной и не содержала функций utf8_encode или mb_convert_encoding. Поэтому сейчас я запускаю задание с помощью следующей команды:

php5.4 myjob.php

… и это работает как шарм.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]