【发布时间】:2011-02-18 20:00:03
【问题描述】:
当我有这个 PHP 脚本时。
<?php
exec('/usr/local/bin/mate hello.txt');
?>
例如,它不适用于带有http://abc/hello.php 的网络浏览器。
mate的命令是'TextMate app',只是用来编辑hello.txt。
这是一些 php 权限问题吗?
我只需要在我的本地 Web 服务器上运行一些命令(我是唯一的用户),这样我就可以打开运行这个看似危险的 exec() 函数的权限。
- 问:如何让它运行 PHP
exec()函数?
我使用 Mac OS X 10.6.6/Apache/PHP5。
添加
我想在我的 Mac 上使用 PHP 启动某些东西是不可能的,但为了我打开 TextMate 编辑器来编辑某些东西的目的,使用 txmt 协议可以正常工作。
已解决
在 web 浏览器(尤其是 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
在 Info.plist 中创建 URL 类型/方案。您可能想要弹出的主窗口。您可以设置Application is agent。
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;
}
@结束
使用pf:OPEN_DIRECTORY 协议。
<form action="pf:DIRECORY_TO_OPEN" method="post">
<button type="submit">Open</button>
</form>
【问题讨论】:
-
my_editor是一个互动程序吗?这意味着如果您在 shell 中启动它,它实际上会与您交互吗? -
你是说你想用一个php脚本在你的机器上打开一个编辑器?
-
@Dalton:是的,我是。如果可能的话,我只是想用网络浏览器来控制。
-
@ircmaxell :不,my_editor 只是 TextMate 程序。
-
为什么这个问题被否决了?