Имеется скрипт, который для переданного ей в качестве параметра ip адреса получает список открытых на нем smb ресурсов (заранее изыестно что 139 порт открыт). При запуске скрипта из консоли все работает как нужно, при запуске через Apache русские символы отсутствуют.
Список ресурсов получаю следующим образом:
exec('smbclient -L '.$ip.' --no-pass > out.txt');
Затем разбираю содержимое файла.
Подскажите, пожалуйста, где здесь "собака зарыта".
А может имеется иной способ решения этой задачи? (сам ничего другого пока не нашел)
PHP+smbclient (проблема с русскими символами)
Модератор: Модераторы разделов
-
КВН
- Сообщения: 242
- Статус: Новичок
Re: PHP+smbclient
русские символы отсутствуют
размытое определение...
А так поди локали надо определять или воспользоваться iconv...
-
aserty
- Сообщения: 3
- ОС: openSuSE 10.3
Re: PHP+smbclient
Вместо русских букв пробелы. 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
так я о чем говорю, код для размышления:
ip можно свой подставить)
Код: Выделить всё
LANG=C;sudo -u nobody smbclient -L 192.168.0.64 --no-passip можно свой подставить)