Mysql и Cron

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


всё тоже самое.. хотя путь правильный
 

McUrex_

ururunet
Из под какого пользователя выполняется пхп скрипт и из под какого выполняется из планировщика?
Если из под разных - убедитесь в том, чтобы переменное окружение этих пользователей совпадало.
 

fixxxer

К.О.
Партнер клуба
УВЕРЕН?
Если php - модулем, то он работает от апача
 

Vorgal

Новичок
я вас случайно обманул.. когда ручками в шелле запускаешь, тоже такая же ошибка..
 

fixxxer

К.О.
Партнер клуба
Запускаешь ты ручками в шелле, или по крону - это суть то же самое.

С помощью phpinfo() сравни переменные окружения в обоих случаях (apache и console).
 

Vorgal

Новичок
что ручки в шелле от крона по сути не отличаются - это я понимаю..
переменные сравнил - всё практически также.. на что следует обратить внимани?
вроде по идее, такая же ошибка должна каждый раз и в error.log апача писаться, однако ж нет...
 

Vorgal

Новичок
В общем, вроде я сам разобрался.. только хочу теперь услышать, правильны ли мои догадки...

Итак.. Как известно, эта ошибка
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 тут непричём..

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

McUrex_

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