Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本地MacOS Jekyll站点(端口4000)上运行PHP代码_Php_Localhost_Jekyll - Fatal编程技术网

在本地MacOS Jekyll站点(端口4000)上运行PHP代码

在本地MacOS Jekyll站点(端口4000)上运行PHP代码,php,localhost,jekyll,Php,Localhost,Jekyll,我已经在本地主机(MacOS Mavericks)上建立了一个Jekyll网站。该网站是服务于和一切关于杰基尔是运行良好 然而,我现在想要一个PHP的联系人表单,它允许我接收电子邮件。我在网站/文件夹中放置了一个contact.php文件,并将表单发布到该文件中。在我的远程web服务器上,这是完美的工作。但是,在本地主机上,不会解析PHP,并且在contact.PHP上显示纯文本。但是,PHP在localhost/contact.PHP上解析得非常好 如何让我的本地主机(Apache?PHP?)

我已经在本地主机(MacOS Mavericks)上建立了一个Jekyll网站。该网站是服务于和一切关于杰基尔是运行良好

然而,我现在想要一个PHP的联系人表单,它允许我接收电子邮件。我在网站/文件夹中放置了一个contact.php文件,并将表单发布到该文件中。在我的远程web服务器上,这是完美的工作。但是,在本地主机上,不会解析PHP,并且在contact.PHP上显示纯文本。但是,PHP在localhost/contact.PHP上解析得非常好

如何让我的本地主机(Apache?PHP?)在本地Mac上处理PHP文件(而不破坏在同一端口上侦听的Jekyll网站)


不能使用同一端口。端口确定将处理IP地址上的请求的应用程序终结点。Jekyll服务器(WEBrick库)默认使用端口4000

处理此问题的典型方法是使用“web服务”添加动态功能。例如,建议使用FormKeepSimpleForm之类的内容

您要求的是自己设置一个“web服务”。为此,它需要位于另一个端口或另一个IP地址上。“服务”只是作为一个端点来接受和处理您的表单帖子。在本例中,您可以在不同于Jekyll的端口上使用Apache/PHP设置Web服务器,例如标准端口80,然后编写一个PHP脚本(例如webform.PHP),该脚本与静态表单结合使用,用于响应和处理表单


注意:可以将Jekyll和Apache配置为响应端口4000上的请求。但是,两个应用程序(也称为服务器)不能同时运行。ip:端口组合决定将internet请求发送到哪个应用程序。

我知道帖子很旧,但这可能有助于某人

Mike Stewart的回答非常好,描述了实现目标需要做些什么

为了补充这个答案,下面是我如何在Mac上进行这种开发的细节

  • 在Apache中配置CORS
  • 在默认端口4000上运行Jekyll站点
  • 在默认端口8888上运行MAMP堆栈
  • 代码进入MAMP的htdocs文件夹(htdocs/your_项目)
  • PHP驻留在单独的“PHP”或“your_project”文件夹中的其他文件夹中
  • 杰基尔监视“your_project”文件夹,并像往常一样编译到_站点
在开发过程中,您将遇到的CORS问题可以通过多种方式在本地解决。以下是在Apache上启用CORS的一个很好的资源:

一旦配置了CORS,就可以在端口8888上对PHP进行Ajax调用