用于本机客户端的PHP(NaCl)

用于本机客户端的PHP(NaCl),php,lint,google-nativeclient,Php,Lint,Google Nativeclient,是否有将php移植到的项目? 我还没找到 我的目标是在不必往返服务器的情况下执行php lint检查。[edit]我知道您现在想要什么了。。。如果能发布一个指向谷歌项目页面的链接,将会很有帮助 您可能需要自己为NaCl编译它。我不确定最初的答案是否真的有用,但我将把它留给子孙后代 使用 您需要使用语法检查 完整参考资料 Usage: php [options] [-f] <file> [--] [args...] php [options] -r <code&g

是否有将php移植到的项目? 我还没找到


我的目标是在不必往返服务器的情况下执行php lint检查。

[edit]我知道您现在想要什么了。。。如果能发布一个指向谷歌项目页面的链接,将会很有帮助

您可能需要自己为NaCl编译它。我不确定最初的答案是否真的有用,但我将把它留给子孙后代


使用

您需要使用语法检查

完整参考资料

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[options][f][-][args…]
php[options]-r
[-][args…]
php[options][-B]-R
[-E][-][args…]
php[options][-B]-F[-E][-][args…]
php[选项]-[args…]
php[选项]-a
-以交互方式运行
-c |在此目录中查找php.ini文件
-n不使用php.ini文件
-d foo[=bar]使用值“bar”定义INI条目foo
-e生成调试器/探查器的扩展信息
-f解析并执行。
-这有什么帮助
-我需要PHP信息
-仅限语法检查(lint)
-m显示在模块中编译
-r
在不使用脚本标记的情况下运行PHP

-B在处理输入行之前运行PHP
-R
为每个输入行运行PHP

-F解析并执行每个输入行
-E在处理所有输入行后运行PHP
-H隐藏从外部工具传递的任何参数。
-s输出突出显示的HTML语法源代码。
-v版本号
-w输出源代码,带有删除的注释和空白。
-z加载Zend扩展。
args。。。传递给脚本的参数。第一个参数时使用--args
以开头-或从标准输入读取脚本
--显示配置文件名
--rf显示有关功能的信息。
--显示关于类的信息。
--重新显示有关扩展的信息。
--rz显示有关Zend扩展的信息。
--ri显示扩展的配置。

回答@crystal miller再次提出的问题:我不知道有任何PHP端口连接到NaCl,但是有很多其他语言的端口,因此如果您确实想将PHP(或任何其他语言)连接到NaCl,下面的信息应该为您指明正确的方向

NaCl团队保存了一个回归测试端口列表。这些都是合理的最新版本,有时包含一个应用于上游项目的小补丁(尽管团队试图上游这些补丁),并且有权为各种NaCl和PNaCl目标(便携式、x86-32、x86-64、ARM、静态链接、动态链接等)生成
make
咒语

您需要从开始,看看您的项目是否在那里。如果你真的让PHP工作了,我建议你做出改变

下一个棘手的问题是您是否要运行该语言:

  • 在Chrome浏览器中,打开web
  • 作为一种铬或铬
  • 在机器上,例如服务器上
编译的基本方法是相同的,但应用程序与外部世界的通信方式将完全不同:沙盒公开了与沙盒外部进程通信的通信机制

在编译端,您可以在目标NaCl本身(特定于体系结构:x86-32/x86-64/ARM/MIPS)和PNaCl(不区分体系结构)之间进行选择。两者都不依赖操作系统,可以作为扩展/应用程序或在服务器上执行,但只有PNaCl可以在开放web上执行。NaCl工具链基于GCC(在编写x86的4.4时,ARM为4.9),而PNaCl工具链基于llvm3.5(很快就会成为树的顶端)。PNaCl工具链也可用于针对NaCl,目前这有点复杂,但是。NACL工具链支持静态和动态链接(通过NeXLIB或GLYBC)以及零成本C++异常处理,而PNACL工具链目前只支持静态链接()和基于SJLJ的异常处理(稍后将出现零成本)。 这听起来很复杂,但总的来说,它只是一个有很多旋钮的编译器:在web上分发需要速度和可移植性

需要记住的一点是:NaCl确实支持一些有限的动态代码生成(例如,有一个使用JIT编译的应用程序),但PNaCl目前不支持。这意味着解释器更容易移植(即使V8也是这样工作的)。有些语言(如Halide、Rust或Julia)生成LLVM位码,可以将此位码传递给PNaCl,但在编写时,有时仍然很棘手,请按照邮件列表进行更新(有些人已经使用了这些代码)。但是,可以动态生成PNaCl的
.pexe
文件,将它们存储在本地文件系统中并执行它们,通过动态链接,您应该能够使用
.pso
执行相同的操作

当作为Chrome(开放式web或扩展或应用程序)的一部分执行时,有。有些API需要特权,有些API仅限于扩展/应用程序(因为它们不适合web模型),有些API要求用户选择加入

作为Chrome的一部分,您可能还希望使用它来模拟更多的POSIX行为,并允许您安装HTML5文件系统,然后只使用常规POSIX API

当作为服务器运行时,事情更复杂:您必须弄清楚如何与外部世界通信,而且NaCl没有默认的api。不过这是可能的:谷歌在内部使用NaCl,还有像Ripple Lab这样的项目可以做到这一点。在这些情况下,您可能希望依靠NaCl的
sel\u ldr
sel\u ldr\u seccomp
来执行NaCl
.nexe
文件(即
s
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>.