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