Добрый вечер:
У меня есть скрипт php, который получает файл .sql, этот скрипт затем импортирует его в базу данных и вносит некоторые изменения в импортируемые данные. Это вызывает это (после перемещения загруженного файла):
shell_exec('nohup bash import.sh > import.log 2>&1 &');
В import.sh есть эта команда среди других:
mysql -h localhost -u x -px x < file_uploaded.sql
Когда я запускаю ‘nohup bash impor.sh> import.log 2>&1 &’из консоли он работает отлично, но при запуске из php-скрипта (nginx) он импортирует .sql с неправильной сортировкой с появлением странных символов.
Я предполагаю, что ваш входной файл закодирован в utf8. Если нет, измените кодировки ниже соответствующим образом.
Просто предположение, но, возможно, для скриптов, выполняемых PHP, неправильно LANG
установлен или отсутствует и по умолчанию не utf-8. Попробуйте установить LANG
явно в вашем import.sh:
export LANG="en_US.UTF-8" # or whatever your default locale is
mysql -h localhost -u x -px x < file_uploaded.sql
Кроме того, вы можете попробовать --default-character-set=
опция для mysql:
mysql -h localhost -u x -px x --default-character-set=utf8 < file_uploaded.sql
Других решений пока нет …