Возможный дубликат:
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 / thingy.
Если веб-сервер работает как служба, вам необходимо изучить возможность «разрешить взаимодействие с рабочим столом» для службы. Но в остальном:
Легкий тест с использованием нового встроенного веб-сервера 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"));
Спасибо всем вашим хорошим парням, какая отличная помощь. Я, наконец, решил, что это правда. С новым годом !
никогда не было причин для этого, но вы пробовали пастхру ()?
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;