2016-11-11 49 views
1

來到這個線程,how to install posix in php,但它不是2011年了。據說最新版本的Windows具有100%的POSIX支持。怎麼樣一個PHP包裝?使用POSIX從PHP,Windows

我需要相當於yum install php-process.dll什麼的。

+0

我認爲我們仍然在2011年(http://php.net/manual/en/intro.posix.php); Windows可以提供POSIX支持,但PHP不提供Windows的擴展。 –

+0

我認爲說100%的POSIX支持是誇張的,[WSL仍然是一個測試版產品](https://blogs.msdn.microsoft.com/wsl/2016/07/08/bash-on-ubuntu-on- windows-10-anniversary-update /),並且可能會有問題。無論如何,如果你想通過PHP使用POSIX,我會猜測最明智的選擇是安裝Ubuntu的PHP發行版,而不是Windows發行版。 –

回答

0

Python支持操作系統執行的所有POSIX操作,因此最簡單的解決方法是使用shell_exec python腳本。好的一面是你不會因爲這個而破壞平臺獨立性。

採取進一步,這是我創造失蹤的funcionality:

function fdopen($fd, $mode, $buffersize){ 
    return shell_exec(" 
      python -c 'import os; print os.fdopen(".$fd.",".$mode.",".$buffersize.")' 
    "); 
} 

異常處理是抓不過來。您必須捕獲Python端的所有異常,並輸出可以在PHP中識別異常的內容。

每個功能都可以按照這個類比來實現。儘管這是一個痛苦的屁股,但總的來說,我很喜歡這個項目的4-5個不同的系統調用,所以它也沒什麼大不了的。但你需要Python :)

+0

嗯......代碼不應該工作,因爲文件描述符在Windows上不可繼承。除非Python的fdopen實際上打開文件*句柄而不是文件*描述符*,我猜? (我會發現令人驚訝的是,文檔確實使它看起來像是在討論文件描述符,但我不能排除它)。 –

+0

我認爲你是對的。 (我沒有需要fdopen代碼,只是舉個例子) –