PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 7
eos12 Отправлено: 05 Июля, 2016 - 15:07:26 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
armancho7777777 пишет:
Я имел в виду логи утилиты этой, если они есть.
Можно ещё глянуть в /var/log/syslog

Я по всему диску шарил - нет вхождений кроме этих. И эти относятся похоже к тому периоду, когда я разрешения на папку 777 еще не выставил.

я так понял, что кроме общего совета посмотреть логи (или еще что-нибудь) других идей нет?

я не шарю в дебиан, но мне кажется, что проблема в чем-то банальном. Учитывая, что штатная утилита whoami глючит.
eos12 Отправлено: 04 Июля, 2016 - 17:32:27 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
что-то я этого никогда не делал ))
в error.log ничего нет
а в auth.log есть
Jul 2 12:27:07 Debian-82-jessie-64-LAMP sudo: pam_unix(sudo:auth): conversation failed
Jul 2 12:27:07 Debian-82-jessie-64-LAMP sudo: pam_unix(sudo:auth): auth could not identify password for [www-data]
Jul 2 12:27:07 Debian-82-jessie-64-LAMP sudo: www-data : user NOT in sudoers ; TTY=unknown ; PWD=/var/www/rtt.priv ; USER=root ; COMMAND=/usr/bin/xlsx2csv /var/tst/files/1.xlsx /var/tst/files/1.csv

понимаю что собака порылась именно здесь, но нихрена не понимаю.
Для проверки добавил www-data в sudorers - тот же результат.
В логи посмотреть не могу - они похоже с запозданием сбрасываются на диск(самые свежие от вчерашнего числа).

чо делать то?
eos12 Отправлено: 04 Июля, 2016 - 07:32:27 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
Команда завершается с ошибкой.
-- я не сомневаюсь в этом )))
Файлы существуют?
Как указываете путь?
Кто владелец директории куда пишется файл и от чьего имени выполняется команда ?

чтоб не быть голословным:
PHP:
скопировать код в буфер обмена
  1.  
  2. exec("ls -l /var/tst", $out, $res);
  3. echo 'ls -l /var/tst -> ';
  4. var_dump($out, $res);
  5.  
  6. unset($out, $res);
  7. exec("ls -l /var/tst/files", $out, $res);
  8. echo '<br>ls -l /var/tst/files -> ';
  9. var_dump($out, $res);
  10.  
  11. unset($out, $res);
  12. exec("xlsx2csv /var/tst/files/1.xlsx /var/tst/files/1.csv", $out, $res);
  13. echo '<br>xlsx2csv /var/tst/files/1.xlsx /var/tst/files/1.csv -> ';
  14. var_dump($out, $res);
  15.  
  16. unset($out, $res);
  17. echo '<br>whoami -> ';
  18. exec("whoami", $out, $res);
  19. var_dump($out, $res);
  20.  


ls -l /var/tst -> array(2) { [0]=> string(7) "total 4" [1]=> string(48) "drwxrwxrwx 2 33 www-data 4096 Jul 4 06:12 files" } int(0)
ls -l /var/tst/files -> array(2) { [0]=> string(10) "total 4776" [1]=> string(52) "-rw-rw-rw- 1 33 www-data 4888658 Jun 30 18:58 1.xlsx" } int(0)
xlsx2csv /var/tst/files/1.xlsx /var/tst/files/1.csv -> array(0) { } int(1)
whoami -> array(0) { } int(1)

про whoami я писал уже - не работает через exec. Как достоверно узнать под кем выполняется php из по апача?
top показывает, что apache крутится из под www-data.
жирное выделение копирую в консоль - делается 1.csv.
(Добавление)
Народ, кто-нибудь может подсказать в чем принципиальное отличие LS и WHOAMI?
Почему первая отрабатывается через exec, а вторая нет!!!???
Еще раз выскажу предположение, что косяки whoami и xlsx2csv имеют общие корни. Но WHOAMI есть у всех, что нельзя сказать про xlsx2csv
eos12 Отправлено: 03 Июля, 2016 - 15:30:05 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
PHP:
скопировать код в буфер обмена
  1. exec("xlsx2csv /dir1/file2.xlsx /dir2/file2.csv", $out, $res);
  2. var_dump($out, $res);

array(0) { } int(1)
PHP:
скопировать код в буфер обмена
  1. exec("xlsx2csv -h", $out, $res);
  2. var_dump($out, $res);

array(0) { } int(1)

в консоли xlsx2csv -h выводит help как и положено
eos12 Отправлено: 03 Июля, 2016 - 12:12:31 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
andrewkard пишет:
eos12 пишет:
exec("xls2csv /dir1/file1.xls > /dir2/file1.csv"); отрабатывается нормально
exec("xlsx2csv /dir1/file2.xlsx /dir2/file2.csv"); не дает результата


а наоборот?

Что наоборот? Не врублюсь что можно сделать наоборот.
если xls2csv 1.xlsx 1.csv то говорит is not OLE file or Error
что вполне ожидаемо.

Господа, а какой у вас на debian результат выполнения
echo exec('whoami', $res);
var_dump($res);
?
Я подозреваю, что если разобраться в чем здесь собака порылась, то и с конвертерами будет понятно...
Я находил где-то похожую тему. Что половина команд нормально отрабатывалась, а вторая глючила. Но там топикстартер устал разбираться и закрыл тему.
eos12 Отправлено: 03 Июля, 2016 - 07:23:17 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. exec('echo $PATH && which xls2csv', $res);
  2. var_dump($res);

Что выводит ?

array(2) { [0]=> string(60) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" [1]=> string(16) "/usr/bin/xls2csv" }

armancho7777777 пишет:

И какой результат в консоли?

/usr/bin/xls2csv

с xlsx2csv результат аналогичный
array(2) { [0]=> string(60) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" [1]=> string(17) "/usr/bin/xlsx2csv" }
/usr/bin/xlsx2csv
eos12 Отправлено: 02 Июля, 2016 - 14:42:08 • Тема: полурабочий exec • Форум: Операционная система и системные вызовы

Ответов: 14
Просмотров: 5312
Добрый день
система DEBIAN. установлены конвертеры xls2csv и xlsx2csv (из консоли работают корректно на 100%). Но из php
exec("xls2csv /dir1/file1.xls > /dir2/file1.csv"); отрабатывается нормально
exec("xlsx2csv /dir1/file2.xlsx /dir2/file2.csv"); не дает результата.
при этом если в консоли запустить xlsx2csv /dir1/file2.xlsx /dir2/file2.csv то все нормально. Права на папки 777. Пробовал все аналоги (shell_exec, system...) - та же хрень.

Пока ковырялся, заметил что даже не все классические примеры работают:
<?php
echo "тестируем ls<br>";
echo exec('ls', $res) . '<br>';
var_dump($res);

unset($res);
echo "<br><br>тестируем whoami<br>";
echo exec('whoami', $res);
var_dump($res);
?>
результат:
тестируем ls
z_arch
array(22) { [0]=> string(17) "00_print_help.php" [1]=> string(9) "0_tst.php" [2]=>
...
[20]=> string(3) "tmp" [21]=> string(6) "z_arch" }

тестируем whoami
array(0) { }

в консоли естесно whoami работает. Подозреваю, что если whoami вылечить, то и исходная проблема снимется...

Кто-нить сталкивался с таким поведением exec?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB