Когда у меня есть этот скрипт PHP.
<?php
exec('/usr/local/bin/mate hello.txt');
?>
Он не работает, например, в веб-браузере с http://abc/hello.php,.
Командой mate является «TextMate app», и она предназначена только для редактирования привет.txt.
Это какая-то проблема с разрешением php?Мне просто нужно выполнить некоторые команды на моем локальном веб-сервере (я единственный пользователь), чтобы я мог открыть разрешение на запуск этой, казалось бы, опасной exec()
функции.
- В: Как я могу заставить его запустить функцию PHP
exec()
?
Я использую Mac OS X 10.6.6 / Apache / PHP5.
ДОБАВЛЕНО
Полагаю, невозможно запустить что-то с PHP на моем Mac, но для моих целей открыть редактор TextMate для редактирования чего-либо, используя протокол txmt, прекрасно работает.
решено
С точки зрения запуска приложения в веб-браузере (особенно Safari) нельзя сделать с php, но с обработчиком протокола.
Запуск TextEditor для редактирования чего-либо.
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
.
![enter image description here](https://i.stack.imgur.com/Jv8gI.png)
Сделать обработчик протокола
pf:
.
Он просто анализирует ввод 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;
}
@ end
Использовать протокол
pf:OPEN_DIRECTORY
.
<form action="pf:DIRECORY_TO_OPEN" method="post">
<button type="submit">Open</button>
</form>