Passthru php не работает

Не работают system и passthru

Добрые сутки!
Изучаю запуск внешних программ
system запускает внешнюю программу
passthru ( string $command [, int &$return_var ] ) : void
command Команда, которая будет выполнена.

Код, который, как я думал, должен запуститься в windows

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не работают команды system()
#include #include #include int main(int a, char* b) < .

выбор сервера Passthru
Есть территориально распределенных 2 сервера Passthru которые пробрасывают к серверу Server.

не работают php фукции exec() system()
перестали работать php фукции exec() system(). Сначало все работало нормально. Несколько раз удалял.

Fatmarmelad, Если нужно вывести на экран результат выполнения можете сделать примерно так:

Кластер для Passthru серверов
Возникла следующая ситуация: Есть 2 сервера посредника (server1 и server2), которые работают в.

Запуск passthru: error 1058
Здравствуйте! Пытаюсь запустить драйвер passthru из примеров WDK. Но при запуске в Driver Monitor.

PHP. Не правильно работают AXES и SYSTEM команды
есть файл на диске, а в нем строки (файл .cmd): @echo off TITLE PocketMine-MP server software.

Возведение в степень, System.Linq.Expressions и метод power не работают
Как в С# возводить в степень? System.Linq.Expressions и метод power не работают. Что я делаю не так

Источник

Windows — php exec (), system (), passthru () не работает (возможна проблема с разрешениями)

У меня возникают проблемы при запуске команд через PHP, некоторые команды, такие как whoami а также dir работать без проблем.

Когда я пытаюсь system(‘notepad.exe’); браузер просто зависает, тогда я получаю ошибку максимального времени выполнения в моих журналах. Это заставляет меня думать, что это ошибка разрешения.

Я попытался запустить Acrobat Reader и FoxitReader, используя system() браузер зависает, но я могу видеть их в списке задач, кажется, они запускаются, но они просто зависают и не открываются.

Windows 10 работает под управлением PHP 5.5.30. Служба Apache установлена ​​как «Вход в систему как: локальная система», и я попытался изменить «Вход в систему как» для учетной записи, с которой я вошел, но это не сработало.

Любая помощь будет отличной.

* РЕДАКТИРОВАТЬ *

Я хочу запустить Acrobat / Word / Excel для печати своих файлов через браузер. Команды, которые я хочу использовать, работают в командной строке, но не в PHP, поэтому я считаю, что это проблема с разрешениями. Я использовал блокнот в качестве примера, он, вероятно, будет относиться к нему как к простой команде, и у него не должно быть проблем с его запуском через system() ,

Читайте также:  Rcd если не настроить что будет

* РЕШЕНИЕ *

Проблема была в том, что Apache работал как служба, которую вы не можете запускать приложения с графическим интерфейсом. См удар для решения проблемы.

Источник

PHP не работает с shell_exec(), system() или passthru()

Я пытаюсь прочитать последний файл из папки. Найдя последний файл, я читаю его по очереди и печатаю его на принтере штрих-кода, используя программное обеспечение Overprinter штрих-кода. Этот принтер штрих-кода является принтером по умолчанию на моем сервере.

Вышеупомянутая командная строка отлично работает в моей командной строке, но она не находится в PHP скрипт.
Программа зависает. Ничего не произошло. Если я прокомментирую строку passthru, все в порядке. Выполняется программа.

Вот что я пробовал до сих пор:

    Проверено, работает ли PHP в безопасном режиме. Это не так.
    Отключен брандмауэр Windows.
    Я выполнил команду calcs /g BarcodeGenerator.exe everyone:F
    Я скопировал исполняемый файл и связанные файлы в папку wamp\www. приведенный выше код (плохая идея, но я все еще это сделал) и redid calcs.
    Я изменил настройки UAC на минимум
    В моей системе нет антивируса.
    Я пробовал system() , shell_exec() и exec() тоже
    Я попытался включить безопасный режим и поместив указанный выше каталог safe_mode_include_dir
    Я попытался заменить двойные кавычки ( » ) одиночными кавычками ( ‘ ).
    Я пробовал дать полный путь ( C:\\wamp\\www\\ )

Команды выполняются нормально в командной строке.

Итак, есть ли способ запустить команду shell_exec в качестве администратора под PHP? Кажется, он вообще не хочет запускать исполняемый файл (не только этот). Я запускаю WAMP на Windows 7 .

Например, shell_exec(‘dir’) работает нормально, но shell_exec(‘java’) не работает. Почему бы и нет?

Источник

passthru

(PHP 4, PHP 5, PHP 7, PHP 8)

passthru — Выполнить внешнюю программу и отобразить необработанный вывод

Описание

Функция passthru() похожа на функцию exec() в том, что она выполняет команду command . Эта функция должна быть использована вместо функции exec() или system() , когда вывод команды Unix представляет собой двоичные данные, которые необходимо передать непосредственно в браузер. Стандартное использование этой функции — выполнение таких утилит как pbmplus, которые выводят непосредственно поток изображения. Установив Content-type в image/gif и затем вызвав программу pbmplus для вывода gif, вы можете создать PHP-скрипты, которые выводят изображения напрямую в браузер.

Читайте также:  Как настроить просмотр iptv

Список параметров

Команда, которая будет выполнена.

Если присутствует аргумент result_code , то код возврата Unix-команды будет помещён здесь.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примечания

Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.

Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.

Смотрите также

  • exec() — Выполнить внешнюю программу
  • system() — Выполнить внешнюю программу и отобразить вывод
  • popen() — Открывает файловый указатель процесса
  • escapeshellcmd() — Экранировать метасимволы командной строки
  • Оператор исполнения

User Contributed Notes 21 notes

Regarding swbrown’s comment. you need to use an output buffer if you don’t want the data displayed.

For example:
ob_start();
passthru(«command«);
$var = ob_get_contents();
ob_end_clean(); //Use this instead of ob_flush()

This gets all the output from the command, and exits without sending any data to stdout.

Note to Paul Giblock: the command *is* run through the shell.
You can verify this on any Linux system with

( ‘echo $PATH’ );
?>

You’ll get the content of the PATH environment variable, not the string $PATH.

If you are using passthru() to download files (for dynamically generated content or something outside webserver root) using similar code:

header(«Content-Type: application/octet-stream»);
header(«Content-Disposition: attachment; filename=\»myfile.zip\»»);
header(«Content-Length: 11111»);
passthru(«cat myfile.zip»,$err);

and your download goes fine, but subsequent downloads / link clicks are screwed up, with headers and binary data being all over the website, try putting

after the passthrough. This will exit the script after the download is done and will not interfere with any future actions.

The documention does not mention that passthru() will only display standard output and not standard error.

If you are running a script you can pipe the STDERR to STDOUT by doing

Eg. the script below will actually print something with the passthru() function.

#!/bin/sh
exec 2>&1
ulimit -t 60
cat nosuchfile.txt

I wrote function, that gets proxy server value from the Internet Explorer (from
registry). It was tested in Windows XP Pro

(Sorry for my English)

function getProxyFromIE ()
<
exec ( «reg query \»HKEY_CURRENT_USER\Software\Microsoft» .
«\Windows\CurrentVersion\Internet Settings\» /v ProxyEnable» ,
$proxyenable , $proxyenable_status );

exec ( «reg query \»HKEY_CURRENT_USER\Software\Microsoft» .
«\Windows\CurrentVersion\Internet Settings\» /v ProxyServer» ,
$proxyserver );

Читайте также:  Hyperx cloud core не работает левое ухо

if( $proxyenable_status != 0 )
return false ; #Can’t access the registry! Very very bad.
else
<
$enabled = substr ( $proxyenable [ 4 ],- 1 , 1 );
if( $enabled == 0 )
return false ;
else
<
$proxy = ereg_replace ( «^[ \t]<1,10>ProxyServer\tREG_SZ[ \t]<1,20>» , «» ,
$proxyserver [ 4 ]);

if( ereg ( «[\=\;]» , $proxy ))
<
$proxy = explode ( «;» , $proxy );
foreach( $proxy as $i => $v )
<
if( ereg ( «http» , $v ))
<
$proxy = str_replace ( «http=» , «» , $v );
break;
>
>
if(@! ereg ( «^8<1,3>\.1<1,3>\.1<1,3>\.7<1,3>\:» .
«5<1,5>$» , $proxy ))
return false ;
else
return $proxy ;
>
else
return $proxy ;
>

>
>
?>
Note, that this function returns FALSE if proxy is disabled in Internet
Explorer. This function returns ONLY HTTP proxy server.

Usage:
= getProxyFromIE ();
if(! $proxy )
echo «Can’t get proxy!» ;
else
echo $proxy ;
?>

Источник

passthru — Выполняет внешнюю программу и отображает необработанный вывод

(PHP 4, PHP 5, PHP 7)

passthru — Выполняет внешнюю программу и отображает необработанный вывод

Описание

Функция passthru() похожа на функцию exec() в том, что она выполняет команду command . Эта функция должна быть использована вместо функции exec() или system() когда вывод команды Unix является двоичными данными, которые необходимо передать непосредственно в браузер. Стандартное использование этой функции — выполнить команду, такую, как утилиты pbmplus, которые выводят непосредственно поток изображения. Установив Content-type в image/gif и затем вызвав программу pbmplus для вывода gif-рисунка, вы можете создать PHP-скрипты, которые выводят изображения непосредственно в браузер.

Список параметров

Команда, которая будет выполнена.

Если присутствует аргумент return_var , то код возврата Unix-команды будет помещён здесь.

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Примечания

Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.

Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.

Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время по практическим причинам запрещено использование .. в качестве компонента пути к исполняемому файлу.

В случае работы в безопасном режиме, строка с командой экранируется с помощью escapeshellcmd() . Таким образом echo y | echo x становится echo y \| echo x.

Смотрите также

  • exec() — Исполняет внешнюю программу
  • system() — Выполняет внешнюю программу и отображает её вывод
  • popen() — Открывает файловый указатель процесса
  • escapeshellcmd() — Экранирует метасимволы командной строки
  • оператор «обратный апостроф»

Источник

Оцените статью