Firefox — Как я могу запустить программу Windows GUI, используя PHP?

Возможный дубликат:
php Как запустить внешнюю программу? Возникли проблемы с системой и exec

как открыть exe с php?
У меня была эта идея, и я несколько лет пытался добиться успеха, но в конце концов потерпел неудачу. кто-нибудь сказать мне метод успеха, чтобы сделать работу?

<?php
if(isset($_POST['file_path'])){
/* -------
using "notepad++.exe" to open "test.php" file.
or run a bat file which calling "notepad++.exe" to open "test.php" file.
how to seting php.ini or firefox or any setting to do this job.
it is only for conveniently developing web page in my PC ,not for web servers
------- */
}
?>

<form action="test.php" method="post">
<input type="text" name="file_path" value="test.php"/>
<button type="submit">open with notepad++</button>
</form>

Это создаст что-то вроде:

отрендеренный скриншот HTML

-1

Решение

Чтобы запустить программу на компьютере, на котором работает веб-сервер:

<?php
exec('"C:\Program Files (x86)\Notepad++\notepad++.exe" "C:\foo.php"');

Вышеуказанное будет работать на vista / win7, ЕСЛИ веб-сервер не работает как служба Windows. Например, если вы запускаете apache и он автоматически запускается при загрузке компьютера, вы, вероятно, установили его как службу. Вы можете проверить, отображается ли apache на вкладке Windows Services / Tessy.

Если веб-сервер работает как служба, вам необходимо включить параметр «разрешить взаимодействие с рабочим столом» для службы. Но в остальном:

Простой тест с использованием нового встроенного веб-сервера php (php 5.4+). Ключевым моментом здесь является то, что вы вручную запускаете сервер из оболочки, чтобы он работал как ваш пользователь, а не как служба.

<?php
// C:\my\htdocs\script.php
exec('"C:\Program Files (x86)\Notepad++\notepad++.exe" "C:\foo.php"');

запустить веб-сервер через командное окно

C:\path\to\php.exe -S localhost:8000 -t C:\my\htdocs

Тогда в вашем браузере
http://localhost:8000/script.php

4

Другие решения

Я предполагаю, что вы хотите, чтобы клиентское устройство открывало Notepad ++, а не удаленный сервер. В этом случае лучшее, что вы можете сделать, — это предоставить файл с соответствующим заголовком типа файла и надеяться, что на клиенте установлен Notepad ++ в качестве приложения по умолчанию для открытия такого файла.

Примерно так должно это сделать:

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="' . $file_name . '"'); // forces file download
header('Content-length: ' . filesize($file_path));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); // make sure file is re-validated each time it is requested

$fh = fopen($file_path, 'r');
while(!feof($fh)) {
$buffer = fread($fh, 2048);
echo $buffer;
}
fclose($fh);

куда $file_name это имя файла (не полный путь) и $file_path полный путь к файлу

3

наконец успешный способ, который я проверил.
спасибо Чарльз, обратитесь к php Как запустить внешнюю программу? Возникли проблемы с системой и exec

  • Пуск-> Выполнить, введите «services.msc», чтобы вызвать управление службами (другие способы получить это, это самый простой IMO)
  • Найдите свой сервис Apache (мой был назван «wampapache» с помощью WampServer 2.0)
  • Откройте свойства сервиса (двойной щелчок или правый клик-> свойства)
  • Перейдите в учетную запись входа и убедитесь, что флажок «Разрешить службе взаимодействовать с рабочим столом» проверено
  • Вернитесь на вкладку Общие, остановите службу, запустите службу

тогда: в php

pclose(popen("start /B \"d:\\green soft\\notepad++5.8.4\\notepad++.exe\" \"d:\\PHPnow-1.5.6\\htdocs\\laji\\a.php\"", "r"));

Спасибо всем вашим хорошим парням, какая большая помощь. Я наконец сделал свою идею, чтобы быть правдой. С новым годом !

2

никогда не было причин для этого, но вы пробовали passthru ()?

http://php.net/manual/en/function.passthru.php

РЕДАКТИРОВАТЬ:
извините, ОП был действительно неясен с первого взгляда ..

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

$someText = 'some text here';

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="text.txt"');

echo $someText;
1
По вопросам рекламы [email protected]