引言:
今天在部署服務器的時候,使用composer來安裝依賴。遇到了php
The Process class relies on proc_open, which is not available on your PHP installation.linux
開始的時候,我有些不知所措,因而冷靜下來思考一番,而後goolge了一下
web
解決方法:shell
在php.ini中,找到disable_functions選項,看看後面是否有proc_open函數被禁用了,若是有的話,去掉便可
數據庫
其實若是php的文檔熟悉的話,你應該立刻就能知道proc_open其實是一個函數,是php用來和shell交互的函數,通常這種能夠直接做用於操做系統的函數是很是不安全的,對於這種不安全的函數,老是要作一些措施來進行保護
apache
正如在google上尋找找的答案同樣,在php.ini的配置中,找到disable_functions選項,這個選項就是專門用來禁止某些不安全函數的,尤爲在命令行運行時,極可能對操做系統帶來安全隱患安全
回憶:服務器
記得兩年前寫想要寫定時備份數據庫的腳本的時候,起初個人本意是使用php來寫,可是使用到system函數的時候,卻老是沒有辦法使用,我一度覺得是個人系統有問題,後來沒有爲了完成任務,我很是無奈的就使用了shell來完成了那個任務composer
如今回想起來,我當時遇到的問題和此時遇到的問題殊途同歸,而後加上本身對linux命令行的理解,而後開始到,我或許應該寫下些什麼。函數
使用PHP的時候,你能夠用它來寫網頁,腳本,可是有些時候,在網頁上和命令行下使用的配置應該是不同的
若是使用apache服務器的話,那麼還有專門給apache使用的php.ini配置,若是對PHP的運行原理不清晰的話,很容易就會被各類各樣的配置迷惑
在不肯定php.ini的配置以前,其實咱們能夠簡單的用linux命令行 find / -name php.ini 命令來查看,整個系統中,到底有多少的配置文件
通常正常來講,通過web的狀況下,使用的是/etc/php.ini
而若是使用命令行的話,可能會使用php安裝目錄下的php.ini
若是還有其餘的,那麼查看一下也是可以找到緣由的