Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с функцией exec

 PHP.SU

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


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

> Без описания
AdeL1ne
Отправлено: 13 Мая, 2011 - 06:27:32
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = '"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "x:\home\localhost\www\POforNP\files/info/Пример.doc"';
  3. exec($dir);
  4.  


этот код почему-то отказывается выполняться, хотя на домашнем компьютере вчера все было нормально. Если скопировать значение переменной $dir и выполнить его в командной строке то файл нормально открывается в WORD. а с сайте хоть убей, не работает... Подскажите в чем может быть причина?

UPD: если убрать кавычки,
PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = '"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" x:\home\localhost\www\POforNP\files/info/Пример.doc';
  3. exec($dir);
  4.  

то команда выполняется, однако для файлов, имеющих в названии пробелы это не прокатывает. в чем может быть причина? почему через командную строку запрос идет нормально, а через php не хочет?

(Отредактировано автором: 13 Мая, 2011 - 08:24:21)

 
 Top
EuGen Администратор
Отправлено: 13 Мая, 2011 - 08:45:37
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Делайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = 'C:\\Progra~1\\Micros~1\\OFFICE11\\WINWORD.EXE x:\\home\\localhost\\www\\POforNP\\files\\info\\Пример.doc'
  3.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
AdeL1ne
Отправлено: 13 Мая, 2011 - 09:03:42
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




EuGen пишет:
Делайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = 'C:\\Progra~1\\Micros~1\\OFFICE11\\WINWORD.EXE x:\\home\\localhost\\www\\POforNP\\files\\info\\Пример.doc'
  3.  


Так вообще не открывается, даже напрямую через командную строку. Да и вообще, с первой частью "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" проблем нет, а вот вторая почему то из двойных кавычек работать не хочет. Мистика.
 
 Top
EuGen Администратор
Отправлено: 13 Мая, 2011 - 09:07:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




То есть у Вас в ОС не работают DOS-пути?
Весьма странно и правда.
Можно сделать тогда хитрее. В переменную PATH прописать требуемые пути и вызывать просто
winword.exe <файл>


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
AdeL1ne
Отправлено: 13 Мая, 2011 - 09:21:55
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




EuGen пишет:
То есть у Вас в ОС не работают DOS-пути?
Весьма странно и правда.
Можно сделать тогда хитрее. В переменную PATH прописать требуемые пути и вызывать просто
winword.exe <файл>


да я уже как только не пробовал, разбивал пути по-всякому в переменные, но проблема похоже в другом...

запрос нормально выполняется в командной строке:
"C:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE" "x:\\home\\localhost\\www\\POforNP\\files\\info\\Пример.doс"

и не хочет выполняться в php коде:
PHP:
скопировать код в буфер обмена
  1. $dir = '"C:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE" "x:\\home\\localhost\\www\\POforNP\\files\\info\\Пример.doс"'
  2. exec($dir);


если проще, то почему то не воспринимаются обработчиком вторые кавычки... хрен знает почему, уже голову сломал Недовольство, огорчение
(Добавление)
EuGen пишет:
То есть у Вас в ОС не работают DOS-пути?


Кстати DOS-пути то как раз работают, просто я не учел, что у меня этих Microsoft в Program Files целая куча и ~1 просто не подходил:

Вот в таком виде запрос наконец-то заработал:
PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = 'C:\\Progra~1\\Micros~4\\OFFICE11\\WINWORD.EXE "X:\\home\\localhost\\www\\POforNP\\Пример.doc"';
  3. exec($dir);
  4.  


Но все же это странно очень, почему не работает, если и путь до WINWORD.EXE заключить в кавычки? ведь на другом компьютере таких проблем не возникало Не понял
 
 Top
gods33
Отправлено: 13 Марта, 2014 - 08:30:10
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Приветствую. У меня такая же проблема. Из командной строки команда запускается а из PHP не хочет.
PHP:
скопировать код в буфер обмена
  1.  
  2. $cmd = 'screen -dm ffmpeg -y -rtsp_transport tcp -fix_sub_duration -i "rtsp://'.$row["ip"].':554/live/ch00_0?fifo_size=256000&buffer_size=2097152&overrun_nonfatal=1" -c:v copy -f mp4 /tmp/hls/'.$filename;
  3.     exec($cmd);
  4.  

Уже все перепробовал. Ничего не помогает. Причем простые команды типа выполняются на ура. Подскажите в чем может быть проблема? Спасибо!

(Отредактировано автором: 13 Марта, 2014 - 08:30:54)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB