|
|
|
| не могу запустить внешнею программу из браузера при этом если запускать php скрипт из консоли все работает нормально . Вот что пытаюсь запустить:
$u=popen("pcl6 -r600 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=$file_name.jpeg -","w");
fputs($u,$pjl);
fputs($u,$pcl);
pclose($u); | |
|
|
|
|
|
|
|
для: 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($handle, 2096);
echo $read;
pclose($handle);
?>
|
| |
|
|
|
|
|
|
|
для: Zend72
(17.03.2009 в 10:42)
| | сам файл pcl6 наделил максимальными правами (где еще может н6е хватить прав ?) | |
|
|
|
|
|
|
|
для: guye
(17.03.2009 в 10:51)
| | Серверу! Серверу прав не хватает. Воспользуйтесь примером из моего предыдущего поста и посмотрите ошибки.
PS
Такого никогда не делал, но думаю нужно полный путь до запускаемой программы указывать. | |
|
|
|
|
|
|
|
для: guye
(17.03.2009 в 10:51)
| | по пробовал выдало такое сообщения 'Resource id #3'; resource sh: /path/to/spooge: not found | |
|
|
|
|
|
|
|
для: guye
(17.03.2009 в 10:57)
| | OMG! Конечно не найден :) Вместо /path/to/spooge Путь до вышей программы укажите. | |
|
|
|
|
|
|
|
для: Zend72
(17.03.2009 в 10:59)
| | теперь выдает просто Resource id #3'; resource sh: правда все равно не работает но спасибо действительно получается что надо прописывать полный путь | |
|
|
|
|
|
|
|
для: guye
(17.03.2009 в 11:07)
| | А вы в конце указали 2>&1? Так как 2>&1 это перенаправление ошибок на стандартный вывод.
PS
Одим глазом посмотрел в документацию... Там еще пишут про proc_open(). Попробуйте его использовать. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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
Покажите весь скрипт. Как он выгляди сейчас? | |
|
|
|
|
|
|
|
для: 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 в 11:42)
| | извиняюсь протупил не было прав на папку в которой создавался файлик изменил права все заработало | |
|
|
|