从PHP打开记事本

从PHP打开记事本,php,string,notepad,Php,String,Notepad,我想从php文件中打开一个记事本,记事本应该包含我在php文件中声明为字符串的文本。基本上,记事本应该用我从php文件传递的文本打开。可以从php执行程序,但只能在服务器端执行 因此,假设服务器运行Windows,它将启动记事本服务器端 PHP在服务器上执行,与客户端运行的内容无关。如果PHP文件在web服务器上执行,则不能让web浏览器打开这样的新进程。我相信你可以想象那会是一个多么大的安全漏洞 如果您在CLI模式下以本地脚本的形式运行PHP文件,则应该能够像启动任何其他进程一样启动记事本,例

我想从php文件中打开一个记事本,记事本应该包含我在php文件中声明为字符串的文本。基本上,记事本应该用我从php文件传递的文本打开。

可以从php执行程序,但只能在服务器端执行

因此,假设服务器运行Windows,它将启动记事本服务器端


PHP在服务器上执行,与客户端运行的内容无关。

如果PHP文件在web服务器上执行,则不能让web浏览器打开这样的新进程。我相信你可以想象那会是一个多么大的安全漏洞

如果您在CLI模式下以本地脚本的形式运行PHP文件,则应该能够像启动任何其他进程一样启动记事本,例如使用或等

然而,如果你真的想做这个服务器端,你最好有一个使用头的PHP脚本,例如

//tell client we're delivering text
header('Content-type: text/plain');

//hint that it's a downloadable file
header('Content-Disposition: attachment; filename="textfile.txt"');

//output our text
echo "The quick brown\nfox jumps over\nthe lazy dog.";
然后,用户可以保存此文件并在他们选择的编辑器中打开。

首先,您可以“创建”文件并用文本填充它

执行shell命令:echo$text>>$filename 然后执行:notepad$filenameToOpen


就是这样。

您无法让PHP在用户机器上打开窗口,因为PHP完全在服务器上运行。当输出到达浏览器时,脚本通常已终止-您只能执行您可以要求浏览器执行的操作以及它允许您执行的操作(使用HTML/标题等)。出于安全目的,浏览器不会(或不应该)让任意网站对您的计算机进行大量操作,例如,它不会让您生成新的Windows进程

我认为你能做的最好的事情是:

$string = 'a string';

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="file.txt"');

echo $string;
//String to show in notepad
$myStringToDisplay = "some text to show in notepad";

//Write this string to a file
$myFile = "somefile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $myStringToDisplay);
fclose($fh);

//Execute notepad with this file as a parameter
system("notepad.exe ".$myFile);
这将发送相关的标题,以便浏览器将内容视为纯文本类型的名为file.txt的下载。浏览器应提示他们下载可能在记事本中打开的文件,除非他们更改了.txt的文件关联


但是,除非您要求用户上传文档,否则您将无法获得用户对文档所做的任何更改,因此我不确定这是否是解决您试图实现的问题的好方法

从技术上讲,要做到这一点,您必须创建一个文件,然后以该文件作为参数执行一个系统。大概是这样的:

$string = 'a string';

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="file.txt"');

echo $string;
//String to show in notepad
$myStringToDisplay = "some text to show in notepad";

//Write this string to a file
$myFile = "somefile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $myStringToDisplay);
fclose($fh);

//Execute notepad with this file as a parameter
system("notepad.exe ".$myFile);
但是,这将在运行PHP文件的服务器上执行Notepad(如果服务器上启用了系统调用),这可能不是您想要做的。PHP不能在客户机上执行任何代码,当然也不能通过系统调用在客户机上执行它想要的任何程序(感谢上帝)。这将是一个巨大的安全漏洞


如果这无法实现所需的功能,请告诉我们您正在尝试做什么以及为什么。这听起来不是一个非常明智的请求。

无法从php应用程序打开程序。但是可以使用PHP文本编辑器加载文本文件。您还可以加载所讨论的值


就是这样一个编辑器。

要从php脚本打开记事本,我们将使用命令行inter-phase。 首先,我们将创建一个php文件,其中我们将编写:

var_dump(popen('notepad','r'));
然后我们将用一些名称保存它,比如
notepad.php
然后在那里打开命令prompat,我们将给出运行文件的文件路径 比如:


它将运行我们的php文件,并将oopen notpad。

这是不能运行的服务器端php,还是php CLI?这个问题还不错,对于初学者来说,这是一个常见的误解。难道你不想要像在线文本编辑器这样的东西吗?现在大多数web浏览器都会自己打开文本/纯文本。@JoshJordan:即使你指定了内容配置:附件等?这是一个很好的观点。我不确定:)我得试一试。