我正在尝试从 Web 服务器运行我的 qooxdoo 应用程序的源版本。该应用程序在从文件系统加载时工作正常,但在从 Web 服务器启动时加载失败。
2 回答
假设您的 qooxdoo 框架位于:/usr/pack/qooxdoo-1.0/frontend
并且您的应用程序位于/home/user/myproject
. 现在将符号链接添加到应用程序目录中,如下所示:
ln -s ../../../../../../../usr/pack/qooxdoo-1.0/frontend qooxdoo
在config.json
文件中设置QOOXDOO_PATH
为qooxdoo
这样,所有对 qooxdoo 源的引用都应该有效,而不管本地根目录的深度如何。对于网络服务器,您可能必须允许 FollowSymlink 或适当的东西......
PS这种方法具有使您的应用程序在Windows上启动时也可以工作的巧妙副作用\\server\user\myproject\source\index.html
源版本大部分时间都在文件系统之外运行(即在浏览器中使用文件:协议打开它)。源脚本仅引用具有相对路径的源代码和资源,无论它们碰巧在您的文件系统中的何处。这通常不适合从 Web 服务器运行。即使您将应用程序的源目录包含在服务器可访问的路径中(位于其 DocumentRoot 或定义的别名之一的下方),源脚本也有可能引用 Web 服务器文档范围之外的文件。
因此,如果您发现自己需要从 Web 服务器运行应用程序的源版本,请注意以下提示:
使 Web 服务器可以访问应用程序的源目录,以便通过有效的 URL 访问它,例如
http://your.web.server/path/to/yourapp/source/index.html
.确保您的应用程序使用的所有组件,因为有 qooxdoo SDK 本身,以及您使用的任何其他 qooxdoo 库或贡献,都可以由 Web 服务器平等访问。
- 在应用程序配置中通过 contrib:// 伪协议引用的 contrib 的情况下,这些会被下载并存储在下载缓存目录(config key cache/downloads)中,因此请确保在您的考虑中包含此路径。
确保 web 服务器上的相对路径与您的文件系统上的相对路径匹配,例如,如果您的应用程序位于文件系统上,
/a/b/A/myapp
并且您的 qooxdoo 安装位于,/a/b/Z/qooxdoo-sdk
并且您的应用程序的服务器路径是,/web/apps/myapp
那么请确保 qooxdoo 的服务器路径是/web/Z/qooxdoo-sdk
这样相对引用喜欢../Z/qooxdoo-sdk will
在 Web 服务器下工作。
实现此目的的一种简单方法是将 DocumentRoot 或 Alias 映射到文件系统中的目录,该目录是应用程序中所有相关 qooxdoo 组件的公共父级。