Возможный дубликат:
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>
Это создаст что-то вроде:
Чтобы запустить программу на компьютере, на котором работает веб-сервер:
<?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
Я предполагаю, что вы хотите, чтобы клиентское устройство открывало 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
полный путь к файлу
наконец успешный способ, который я проверил.
спасибо Чарльз, обратитесь к php Как запустить внешнюю программу? Возникли проблемы с системой и exec
тогда: в php
pclose(popen("start /B \"d:\\green soft\\notepad++5.8.4\\notepad++.exe\" \"d:\\PHPnow-1.5.6\\htdocs\\laji\\a.php\"", "r"));
Спасибо всем вашим хорошим парням, какая большая помощь. Я наконец сделал свою идею, чтобы быть правдой. С новым годом !
никогда не было причин для этого, но вы пробовали 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;