1. 程式人生 > >MAC Call to undefined function Think\imagettftext()

MAC Call to undefined function Think\imagettftext()

今天在用Thinkphp框架做專案的時候,用到了thinkPHP框架的驗證碼,驗證碼一直出不來,報錯顯示:
Call to undefined function Think\imagettftext()
1.下載新的php版本且帶有大量php擴充套件
我在網上查詢了下,是因為gd未安裝freetype,訪問phpinfo()可以返現發現沒有這個模組
然後大家給出比較終極的方案都是通過一行命令來解決:
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.1
注:最後的7.1是我目前php的版本號,你可以先查詢下自己php的版本號
官網地址:https://php-osx.liip.ch/
敲下回車後,你可能會看見以下警告:

Detected OS X El Capitan 10.11. As this is quite new, there may be issues still. Your mileage may vary.

不用管這個警告,等待下載安裝完畢即可(下載的時候有時候特別慢,如果很久都沒有反應可以又重新執行命令列)。

2.配置PHP命令路徑
當時我是看網上大家都說直接執行命令就可以啦,我發現下載完成之後,該報錯的還是報錯,而且擴充套件也沒有加上。

當我在命令列中輸入:

php -v 

還是之前的版本。安裝完畢如果在終端裡執行PHP -v命令,還是會顯示mac自帶的舊版本。因此,我們還需要配置一下路徑。

在命令列中輸入如下命令:
sudo vim ~/.bash_profile
然後,在檔案的最後加上:
export PATH=/usr/local/php5-7.1.13-20180201-134129/bin:$PATH;
注意:我這裡是以安裝的PHP7.1的路徑來配置的,你需要進到/usr/local中檢視你所安裝的PHP的路徑。
最後,執行命令:
source ~/.bash_profile
配置完成,再試試php -v顯示的就是最新安裝的PHP版本了。
3.更改Apache中PHP的載入

更有意思的是,當我通過頁面檢視phpinfo()時,我發現phpinfo中的php的版本號既不是我之前php的php版本,也不是我現在php版本,然後我通過命令列找啦以下

php:sudo find / -name 'php'
我才發現我的MAC上安裝了多個php版本(ps:之前電腦是別人用的,我只是簡單配置了下就使用了)
這時需要在 apache2 配置檔案中修改 PHP 的擴充套件路徑即可:
vi /etc/apache2/httpd.conf
Mac 自帶的 apache 配置檔案中 載入的是 PHP5.5 的版本,如果需要載入自己安裝的版本,
請指定自定義的 PHP 安裝路徑。

載入路徑示例(我的Mac上配置的路徑):

LoadModule php5_module LoadModule php7_module /usr/local/php5-7.1.13-20180201-134129/libphp7.so #填寫自己版本的libphp5.so的路徑,就會使用對應的php版本  
之後重啟 apache:
sudo apachectl restart
在命令列可以通過命令:
php -i 
來檢視phpinfo的資訊,在這些可以看到當前的php版本載入那個目錄下的php配置檔案等。
在這樣切換之後,我再次用頁面訪問phpinfo()就發現freetype已經有了,我在看驗證碼頁面,驗證碼就已經顯示出來了。