回答
我结束了使用php.js lint在浏览器中检查PHP。 http://phpjs.hertzen.com/
PHP.js用JavaScript编写一个PHP虚拟机。它的工作原理,但不是一个完美的解决方案,因为一些语法已过时。 NaCl溶液可能会更好,因为我认为它会更容易维护。但同时这是我能找到的最好的。
我明白你现在的想法......发布一个链接到google项目页面会有帮助。
您可能正处于需要自己编译NaCl的地步。我不确定最初的答案是否真的有用,但我将它留给子孙后代。 :)
使用command line version of PHP。
你要使用的语法检查option
-l Syntax check only (lint)
全参考
Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]
php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
php [options] -- [args...]
php [options] -a
-a Run interactively
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse and execute <file>.
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-r <code> Run PHP <code> without using script tags <?..?>
-B <begin_code> Run PHP <begin_code> before processing input lines
-R <code> Run PHP <code> for every input line
-F <file> Parse and execute <file> for every input line
-E <end_code> Run PHP <end_code> after processing all input lines
-H Hide any passed arguments from external tools.
-s Output HTML syntax highlighted source.
-v Version number
-w Output source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin
--ini Show configuration file names
--rf <name> Show information about function <name>.
--rc <name> Show information about class <name>.
--re <name> Show information about extension <name>.
--rz <name> Show information about Zend extension <name>.
--ri <name> Show configuration for extension <name>.
接听@晶米勒的这个问题的复兴:我不知道任何PHP的端口到NaCl,但是有很多其他语言的端口,所以如果您希望将PHP(或任何其他语言)移植到NaCl,以下信息应指向正确的方向。
NaCl团队在naclports中保留了经过回归测试的端口列表。这些都是合理的最新的,有时包含一个适用于上游项目的小补丁(尽管团队试图在这些补丁的上游),并且为各种NaCl和PNaCl目标构建了正确的咒语(便携式,x86-32 ,x86-64,ARM,静态链接,动态链接......)。
您需要从naclports开始查看您的项目是否在那里。如果你确实让PHP工作,我建议contacting the mailing list并贡献你的改变。
下一个棘手的一点是,你是否要运行的语言:
编译的基本方法将是相同的,但应用程序与外部世界的通信方式将完全不同:沙箱公开通信机制以与沙箱外的进程交谈。
在编译方面,您可以选择针对NaCl本身(架构特定:x86-32/x86-64/ARM/MIPS)或PNaCl(架构不可知)。两者都是操作系统不可知的,可以作为扩展/应用程序或服务器执行,但只有PNaCl可以在打开的网络上执行。 NaCl工具链基于GCC(写入x86的4.4版本,ARM的版本为4.9),而PNaCl工具链则基于LLVM 3.5(即将成为树结点)。 PNaCl工具链也可以用来定位NaCl,目前有点复杂,但是should get much better soon with nacl-clang。NaCl工具链支持静态和动态链接(通过newlib或glibc)以及零成本C++异常处理,而PNaCl工具链目前仅支持静态链接(work in progress to add dynamic linking)和基于SJLJ的异常处理(零成本稍后) 。
这听起来很复杂,但总体上它只是一个带有很多旋钮的编译器:在网络上分发需要速度和可移植性。
有一点需要记住:NaCl确实支持一些有限的动态代码生成(例如,有一个使用JIT编译的Mono port),但是PNaCl目前不支持。这意味着口译员更容易移植(即使V8在NaCl中也能这样工作)。一些像Halide,Rust或Julia这样的语言生成LLVM位码,并且可以将这个位码传递给PNaCl,但是在编写时它仍然有点棘手,请按照邮件列表获取更新(有些人已经获得了这些工作)。不过,可以动态生成PNaCl的.pexe
文件,将它们存储在本地文件系统中,并执行它们,并且通过动态链接,您应该可以对.pso
执行相同的操作。
当作为铬的部分(开放式网络或扩展程序或应用)执行有APIs to communicate with the rest of Chrome。有些API需要特权,有些仅限于扩展/应用(因为它们不适合网络模型),有些需要用户选择加入。
自Chrome的一部分,您可能还需要使用nacl_io看齐更加POSIX的行为,并允许你如安装HTML5文件系统,然后使用常规的POSIX API。
当作为一个服务器运行的东西比较复杂:你必须弄清楚如何与外界沟通,和NaCl没有默认的API。但有可能:Google在内部使用NaCl,并且有ZeroVM和Ripple Lab的Codius Smart Contracts这样的项目。在这种情况下,你可能要依靠氯化钠的sel_ldr
或sel_ldr_seccomp
执行氯化钠.nexe
文件(seccomp
版本设置围绕通常氯化钠沙箱基于的Seccomp沙箱做系统调用过滤,我建议过这样做)。 NaCl和PNaCl自己的测试套件使用sel_ldr
进行回归测试。
考虑到这一点,我认为你已经指出了你需要从任何方向入手的所有信息!
- 1. 如何避免建立NaCl客户端的手臂?
- 2. 客户端本地存储的数据
- 3. 试图从谷歌安装nacl(本机客户端),但得到语法错误
- 4. 谷歌本地客户端(NaCl,PNaCl)中的英特尔线程构建模块(TBB)
- 5. PHP SOAP客户端
- 6. PHP/FTP客户端
- 7. 不能做本地客户端演示
- 8. 避免更新本地客户端
- 9. 从本地连接到客户端cassandra
- 10. OpenEJB本地客户端注入失败
- 11. WCF客户端本地函数
- 12. 什么是本地客户端?
- 13. 订阅同一客户端的两个paho.mqtt客户端本地化
- 14. 使用本地php客户端构建SOAP主体
- 15. PHP中的WebSocket客户端?
- 16. 转换为本地客户端与本地时间与c#
- 17. 基本的twitter客户端
- 18. 客户端版本的URI
- 19. Azure客户端IP地址
- 20. 客户端ip地址
- 21. 更改套接字客户端的本地端口
- 22. 检测客户端的本地IP地址
- 23. PHP限速客户端
- 24. php聊天客户端
- 25. solr php客户端刻面
- 26. PHP SOAP客户端到WCF
- 27. 运行PHP客户端
- 28. Solr PHP客户端vs file_get_contents?
- 29. PHP邮件客户端库
- 30. WSDL客户端问题,PHP
我希望我回答你的问题在下面!我不确定你是以开放网络,扩展/应用程序还是服务器用例为目标,所以我试图回答所有这些问题。 –
你看过http://www.icosaedro.it/phplint/?或想到在命令行上使用php命令做这件事? – unixmiah
Phplint没有帮助,因为它运行在PHP中,目的是在不连接到服务器的情况下在浏览器中执行lint检查。 –