回答
我結束了使用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檢查。 –