Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запуск внешних программ
 
 автор: guye   (17.03.2009 в 10:14)   письмо автору
 
 

не могу запустить внешнею программу из браузера при этом если запускать php скрипт из консоли все работает нормально . Вот что пытаюсь запустить:
$u=popen("pcl6 -r600 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=$file_name.jpeg -","w");
fputs($u,$pjl);
fputs($u,$pcl);
pclose($u);

  Ответить  
 
 автор: Zend72   (17.03.2009 в 10:42)   письмо автору
 
   для: guye   (17.03.2009 в 10:14)
 

Видимо серверу прав не хватает.

Если команда для выполнения не может быть найдена, будет возвращён действующий ресурс. Это может выглядить странно, но имеет смысл; это даёт вам возможность получить доступ к любому сообщению об ошибке, которое вернёт оболочка:
<?php
error_reporting
(E_ALL);

/* Добавляем перенаправление чтобы прочитать stderr. */
$handle popen('/path/to/spooge 2>&1''r');
echo 
"'$handle'; " gettype($handle) . "\n";
$read fread($handle2096);
echo 
$read;
pclose($handle);
?>

  Ответить  
 
 автор: guye   (17.03.2009 в 10:51)   письмо автору
 
   для: Zend72   (17.03.2009 в 10:42)
 

сам файл pcl6 наделил максимальными правами (где еще может н6е хватить прав ?)

  Ответить  
 
 автор: Zend72   (17.03.2009 в 10:53)   письмо автору
 
   для: guye   (17.03.2009 в 10:51)
 

Серверу! Серверу прав не хватает. Воспользуйтесь примером из моего предыдущего поста и посмотрите ошибки.

PS
Такого никогда не делал, но думаю нужно полный путь до запускаемой программы указывать.

  Ответить  
 
 автор: guye   (17.03.2009 в 10:57)   письмо автору
 
   для: guye   (17.03.2009 в 10:51)
 

по пробовал выдало такое сообщения 'Resource id #3'; resource sh: /path/to/spooge: not found

  Ответить  
 
 автор: Zend72   (17.03.2009 в 10:59)   письмо автору
 
   для: guye   (17.03.2009 в 10:57)
 

OMG! Конечно не найден :) Вместо /path/to/spooge Путь до вышей программы укажите.

  Ответить  
 
 автор: guye   (17.03.2009 в 11:07)   письмо автору
 
   для: Zend72   (17.03.2009 в 10:59)
 

теперь выдает просто Resource id #3'; resource sh: правда все равно не работает но спасибо действительно получается что надо прописывать полный путь

  Ответить  
 
 автор: Zend72   (17.03.2009 в 11:08)   письмо автору
 
   для: guye   (17.03.2009 в 11:07)
 

А вы в конце указали 2>&1? Так как 2>&1 это перенаправление ошибок на стандартный вывод.

PS
Одим глазом посмотрел в документацию... Там еще пишут про proc_open(). Попробуйте его использовать.

  Ответить  
 
 автор: guye   (17.03.2009 в 11:14)   письмо автору
 
   для: Zend72   (17.03.2009 в 11:08)
 

при добавлении $u=popen("/usr/local/bin/pcl6 -r600 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=$file_name.jpeg - 2>&1","w") выбивает 'Resource id #3'; resource sh: /path/to/spooge: not found

  Ответить  
 
 автор: Zend72   (17.03.2009 в 11:29)   письмо автору
 
   для: guye   (17.03.2009 в 11:14)
 

Брр... Как так Оо У казагн ведь полный путь до программы Оо Причем тут вообще /path/to/spooge... Или это, типо, стандартная ошибка оО
PS
Все же верно и я прав как никогда...
________________________________________________________
sudo < my_password
после просьбы sudo ввести пароль, он возьмется из файла my_password, как будто вы его ввели с клавиатуры.
Если необходимо записать в файл только ошибки, которые могли возникнуть при работе программы, то можно использовать:
./program_with_error 2> error_file
цифра 2 перед ">" означает что нужно перенаправлять все что попадет в дескриптор 2(stderr).
Если необходимо заставить stderr писать в stdout, то это можно можно след. образом:
./program_with_error 2>&1

символ "&" означает указатель на дескриптор 1(stdout)
(Поумолчанию stderr пишет на ту консоль, в котрой работает пользователь(вренее пишет на дисплей)).

PPS
Покажите весь скрипт. Как он выгляди сейчас?

  Ответить  
 
 автор: guye   (17.03.2009 в 11:42)   письмо автору
 
   для: Zend72   (17.03.2009 в 11:29)
 

<?php
$file_name="/mnt/disk0/vmshare/pcl_kvit/2pcl.txt";
$E = chr(27);
$page="A4";
$pjl="$E%-12345X@PJL
@PJL DEFAULT LPARM:PCL PITCH = 14
@PJL DEFAULT PAPER = $page
@PJL DEFAULT LPARM:PCL SYMSET= PC866CYR
@PJL RESOLUTION = 300";
$pcl="$E%-12345X@PJL\n".
$E."E$E%0BINSP1SC0,1,0,4;PW0.1LT6,25,1;PU0,3;PD1,3;PU0,2;PD1,2;PU0,1;PD1,1;IN$E%0A\n";
$u=popen("/usr/local/bin/pcl6 -r600 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=$file_name.jpeg -","w");
fputs($u,$pjl);
fputs($u,$pcl);
pclose($u);
?>

  Ответить  
 
 автор: guye   (17.03.2009 в 12:34)   письмо автору
 
   для: guye   (17.03.2009 в 11:42)
 

извиняюсь протупил не было прав на папку в которой создавался файлик изменил права все заработало

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования