Когда у меня есть этот PHP-скрипт.
<?php exec('/usr/local/bin/mate hello.txt'); ?>
Например, он не работает в веб-браузере с http: //abc/hello.php .
Команда mate – это «приложение TextMate», и это просто для редактирования hello.txt.
Это проблема с разрешением php? Мне просто нужно запустить некоторые команды на моем локальном веб-сервере (я единственный пользователь), поэтому я могу открыть разрешение для запуска этой, казалось бы, опасной функции exec()
.
exec()
? Я использую Mac OS X 10.6.6 / Apache / PHP5.
Я думаю, что невозможно запустить что-то с PHP на моем Mac, но для моих целей открыть редактор TextMate для редактирования, используя протокол txmt, отлично работает.
С точки зрения запуска приложения в веб-браузере (особенно в Safari) не может быть сделано с php, но с обработчиком протокола.
TextEditor предоставляет свой собственный обработчик протокола txmt://open/?url=file://THE_FILE_TO_EDIT"
.
Или вы можете нажать кнопку, чтобы отредактировать файл при нажатии.
<form action="txmt://open/?url=file://FILE_TO_EDIT" method="post"> <button type="submit">Edit</button> </form>
Вам нужно придумать свой собственный обработчик протокола. имеет всю необходимую информацию с примером.
Например, для запуска PathFinder
Создавайте типы URL / схемы в Info.plist.
Вы можете захотеть открыть главное окно. Вы можете установить Application is agent
.
Создайте обработчик pf:
protocol.
Он просто анализирует входные данные pf:INPUT_GINVEN
, чтобы получить часть INPUT_GIVEN
чтобы передать ее как параметр PathFInder.
@implementation URLHandlerCommand! - (id)performDefaultImplementation { NSString *urlString = [self directParameter]; NSLog(@"url :=: %@", urlString); NSArray *components = [urlString componentsSeparatedByString: @":"]; NSString* string2 = (NSString*) [components objectAtIndex:1]; NSLog(@"url :=: %@", string2); [[NSWorkspace sharedWorkspace] openFile:string2 withApplication:@"Path Finder"]; [[NSApplication sharedApplication] terminate:nil]; return nil; }
@конец
Используйте протокол pf:OPEN_DIRECTORY
.
<form action="pf:DIRECORY_TO_OPEN" method="post"> <button type="submit">Open</button> </form>