如何运行 FabricJS
FabricJS 可以以两种方式运行 - 客户端或服务器端。
在客户端,它是一个简单的 Javscript 文件,您需要将其加载到网页中。通过这种方式,您可以创建一个 GUI,用户可以在其中操作图像并根据需要保存图像。这就是examples on the FabricJS website 正在做的事情。
在客户端,FabricJS 需要在 NodeJS 服务器上运行。你可以找到一些 basic instructions on the FabricJS website 来了解如何在 NodeJS 中运行它。
优点/缺点
每种方法都有优点/缺点。
在我看来,客户端设置更容易编程(尽管我是一名网络开发人员),并允许您构建一个 GUI,为您的用户创建一个简单的界面供您使用。但是,浏览器和客户端计算机可能会遇到一些限制。例如,如果您正在渲染高分辨率图像,它可能会有一些限制,特别是如果您想将图像发送到服务器。移动设备在分辨率更高的图像方面存在问题。
服务器端设置消除了大部分限制,但消除了任何 GUI 选项。但实际上工作并没有那么糟糕。首先要记住的最让我失望的是,如果您对 NodeJS 代码进行任何更改,您需要在它们生效之前重新启动您的 NodeJS 服务器。但是,如果您熟悉 NodeJS,那就不是什么新鲜事了。
服务器设置
有了上述背景,您的问题是如何在 PHP 服务器上运行 FabricJS。如上所述,FabricJS 需要 NodeJS 才能运行。你可以简单地在你的 PHP 服务器上安装 NodeJS。在此配置下,您现在将拥有两个在相同域名/IP 地址上运行的网络服务器。因此,两者中的一个将需要不同的端口。示例:
http://www.myPHPserver.com(Apache/Nginx 80 端口)
http://www.myPHPserver.com:8080(NodeJS 在端口 8080 或任何开放端口)
或者,您可以选择在不同的服务器上安装 NodeJS 和 FabricJS,并避免端口冲突。示例:
http://www.myPHPserver.com(Apache/Nginx 80 端口)
http://www.myNodeJSserver.com(NodeJS 在端口 80)
跨源脚本
如果您使用网络服务器来处理 FabricJS 脚本,您将遇到需要处理的跨域脚本问题。这将在上面提供的两个服务器配置示例下发生,因为端口或域名会导致跨域设置。但这可以通过执行以下操作来克服:
- 服务器
- 在图像上设置 access-control-allow-origin 标头。
- 浏览器/客户端
您可以从这篇文章 - Fabric JS Tainted Canvas – Cross-Origin Images 中了解有关如何执行此操作的更多信息。
处理跨域图像的另一种方法是使用server proxy as described here。
在 NodeJS 上安装 FabricJS
如果您在 NodeJS 上安装 FabricJS 时需要帮助,这里有一些安装指南。
Install FabricJS on Debian Squeeze 6.0.10
Install FabricJS on Ubuntu 12.04 precise
从 NodeJS 运行 PHP 脚本
根据您的问题,这听起来不像是需要的,但我想我至少会提到它。如果您需要从 NodeJS 服务器调用 PHP 脚本,可以使用 exec 命令来完成。
NodeJS 服务器
var runner = require("child_process");
var phpScriptPath = "path/to/your/php/script.php";
var argsString = "value1,value2,value3";
runner.exec("php " + phpScriptPath + " " +argsString, function(err, phpResponse, stderr) {
if(err) console.log(err); /* log error */
console.log( phpResponse );
});
PHP 脚本
<?php
$params = explode(",", $argv[1]);
echo $params[0] ." - " . $params[1] . " - " . $params[2];
?>
致电PHP script from NodeJS