PHP+smbclient (проблема с русскими символами)

Модератор: Модераторы разделов

aserty
Сообщения: 3
ОС: openSuSE 10.3

PHP+smbclient

Сообщение aserty »

Имеется скрипт, который для переданного ей в качестве параметра ip адреса получает список открытых на нем smb ресурсов (заранее изыестно что 139 порт открыт). При запуске скрипта из консоли все работает как нужно, при запуске через Apache русские символы отсутствуют.
Список ресурсов получаю следующим образом:
exec('smbclient -L '.$ip.' --no-pass > out.txt');
Затем разбираю содержимое файла.

Подскажите, пожалуйста, где здесь "собака зарыта".

А может имеется иной способ решения этой задачи? (сам ничего другого пока не нашел)
Спасибо сказали:
Аватара пользователя
КВН
Сообщения: 242
Статус: Новичок

Re: PHP+smbclient

Сообщение КВН »

русские символы отсутствуют

размытое определение...
А так поди локали надо определять или воспользоваться iconv...
Спасибо сказали:
aserty
Сообщения: 3
ОС: openSuSE 10.3

Re: PHP+smbclient

Сообщение aserty »

КВН писал(а):
01.04.2008 22:01
русские символы отсутствуют

размытое определение...
А так поди локали надо определять или воспользоваться iconv...


Вместо русских букв пробелы. iconv применять не к чему так как уже smbclient возвращает битый текст.

Дамп скрипта при запуске из консоли:

Код:

video Disk" [4]=> string(49) " IPC$ IPC Удаленный IPC" [5]=> string(73) " D$ Disk Стандартный общий ресурс" [6]=> string(21) " SharedDocs Disk" [7]=> string(21) " Work Disk" [8]=> string(21) " DISTRIB Disk" [9]=> string(21) " vc2005 Disk" [10]=> string(21) " Js-manual Disk" [11]=> string(21) " Prj Disk" [12]=> string(21) " Новое ТЗ Disk" [13]=> string(21) " MUSIC Disk" [14]=> string(21) " advokat Disk" [15]=> string(21) " video2 Disk" [16]=> string(51) " ADMIN$ Disk Удаленный Admin" [17]=> string(73) " C$ Disk Стандартный общий ресурс"


а это тот же участок дампа, только скрипт запущен через апач

Код:

video Disk" [4]=> string(75) " IPC$ IPC D$ Disk SharedDocs Disk" [5]=> string(21) " Work Disk" [6]=> string(21) " DISTRIB Disk" [7]=> string(21) " vc2005 Disk" [8]=> string(21) " Js-manual Disk" [9]=> string(21) " Prj Disk" [10]=> string(22) " MUSIC Disk" [11]=> string(21) " advokat Disk" [12]=> string(21) " video2 Disk" [13]=> string(76) " ADMIN$ Disk C$ Disk


вот сам тестовый скрипт

Код:

<?php $ip="192.168.1.218"; $command="smbclient --list=$ip --no-pass"; exec($command,$out,$ret); var_dump($out); ?>


локаль пробовал менять с помощью setlocale(); результатов не дало никаких
(если что-то еще нужно для понимания проблемы, выложу без проблем)
Спасибо сказали:
Аватара пользователя
КВН
Сообщения: 242
Статус: Новичок

Re: PHP+smbclient

Сообщение КВН »

так я о чем говорю, код для размышления:

Код: Выделить всё

LANG=C;sudo -u nobody smbclient -L 192.168.0.64 --no-pass

ip можно свой подставить)
Спасибо сказали: