Mysql и Cron

  • Автор темы Автор темы Vorgal
  • Дата начала Дата начала

Vorgal

Новичок
Mysql и Cron

Подскажите, пожалуйста!
При работе с mysql из php-скрипта, через http или shell всё ок..
но когда скрипт выполняется по крону, то получаются такие ошибки..


X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/xxx>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=xxx>
X-Cron-Env: <USER=xxx>

File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#14' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file


Пробовал писать в /etc/my.cnf

[client]
character-sets-dir=/usr/local/share/mysql/charsets


всё тоже самое.. хотя путь правильный
 
Из под какого пользователя выполняется пхп скрипт и из под какого выполняется из планировщика?
Если из под разных - убедитесь в том, чтобы переменное окружение этих пользователей совпадало.
 
УВЕРЕН?
Если php - модулем, то он работает от апача
 
я вас случайно обманул.. когда ручками в шелле запускаешь, тоже такая же ошибка..
 
Запускаешь ты ручками в шелле, или по крону - это суть то же самое.

С помощью phpinfo() сравни переменные окружения в обоих случаях (apache и console).
 
что ручки в шелле от крона по сути не отличаются - это я понимаю..
переменные сравнил - всё практически также.. на что следует обратить внимани?
вроде по идее, такая же ошибка должна каждый раз и в error.log апача писаться, однако ж нет...
 
В общем, вроде я сам разобрался.. только хочу теперь услышать, правильны ли мои догадки...

Итак.. Как известно, эта ошибка
File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#14' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file
возникает из-за того, что КЛИЕНТ был скомпилирован без поддержки какого-то чарсета, в данном случае cp1251..

В моём случае, mysql собирался сразу с cp1251, а my.cnf действует исключительно на майскюловский клиент (т.е. тот который запускается в шелле по команде mysql). Собственно говоря, поэтому и не писалось никакой ошибки до того, как я это прописал в my.cnf, при запуске майскюльного клиента...

Чтобы php подхватил чарсет его нужно собирать не просто с --with-mysql, а c --with-mysql=путь_до_mysql. Именно так и был у нас собран php и именно поэтому ничего не писалось и в error.log апача..

НО!!! php был собран с --disable-cli, так как админ меня уверил, что последние версии не собираются под фрибсд без этого аттрибута.... хотя я лично собирал на других серверах.. ну да Бог с ним.. и поэтому, когда мне понадобилось запускать скрипты по крону, он мне подсунул бинарник от старой версии пхп, которая была собрана без указания пути к mysql, т.е. просто с --with-mysql. и именно поэтому вся эта беда, и естесственно my.cnf тут непричём..

Проблема теперь в том, что админ этот уже уволился, и сервер передали мне... Хотелось бы сначала узнать, правильны ли мои догадки, так как пришло это мне практически во сне... прямо как гром средь ясного неба.. )))
 
вот если надо было что-то запутать - у Вас это получилось...из всего вышеперечитанного выше могу Вам ответить наверняка только на один вопрос под фрюхой все собирается как угодно с любыми ключами...
все остальное - действительно только догадки...
 
Сверху