您好,登錄后才能下訂單哦!
小Q:雄關漫道真如鐵,而今邁步從頭越。從頭越,蒼山如海,殘陽如血。 ——***
目前php最新版本7.0,因為需要,所以我嘗試安裝了一下,期間也遇到了好多問題,其中一些問題和老的版本差不多,我就不一 一細說了,有問題的朋友可以給我留言,一塊探討;
-------------------------------------------------------------------------------------------------
第一:安裝完成之后找不到php-fpm.conf配置文件,其實好多關于fpm的配置文件都沒有,只是我的水平不高,只能意識到php-fpm.conf;當時我沒注意直接在解壓的源碼包里復制了一個大致類似的www.conf作為主配置文件,拷貝了一個啟動文件,稍微配置了一下倒也是能啟動成功,沒什么大問題。
直到我在給php加擴展模塊的時候出現了make編譯時一直提示少目錄文件報錯的問題;
【我在想是不是/usr/local/php/bin/phpizen生成./configure時也會生成一些make時需要的目錄文件,如果是這樣那么我的錯就出在php安裝的過程,是不是因為編譯php時漏掉了一些選項而導致phpize“生成”的不完全(其實我也感覺不是這的問題,不過不試試怎么知道呢),網上說也許是--enable-fpm的作用是開啟php的fastcgi功能即開啟php-fpm功能】
于是我又到了解壓php的目錄下,再次./configure --enable-fpm >> make >> make install;
完成之后意外的發現有了php-fpm.conf等文件,但是再次編譯模塊還是不成功,但也不是無功而返。
第二:(這是重點要說的)
一般下載php模塊去PECL,里邊的模塊都是可用的,都沒問題;
于是我下載好之后,開始編譯,首先用phpizen生成configure文件,然后./confoigure先預編譯一下,很成功沒什么問題;
之后make
[root@bogon memcache-3.0.8]# make /bin/sh /usr/local/src/memcache-3.0.8/libtool --mode=compile cc -I/usr/local/include/php -I. -I/usr/local/src/memcache-3.0.8 -DPHP_ATOM_INC -I/usr/local/src/memcache-3.0.8/include -I/usr/local/src/memcache-3.0.8/main -I/usr/local/src/memcache-3.0.8 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/memcache-3.0.8/memcache.c -o memcache.lo mkdir .libs cc -I/usr/local/include/php -I. -I/usr/local/src/memcache-3.0.8 -DPHP_ATOM_INC -I/usr/local/src/memcache-3.0.8/include -I/usr/local/src/memcache-3.0.8/main -I/usr/local/src/memcache-3.0.8 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/memcache-3.0.8/memcache.c -fPIC -DPIC -o .libs/memcache.o In file included from /usr/local/src/memcache-3.0.8/php_memcache.h:34:0, from /usr/local/src/memcache-3.0.8/memcache.c:30: /usr/local/src/memcache-3.0.8/memcache_pool.h:45:47: 致命錯誤:ext/standard/php_smart_str_public.h:沒有那個文件或目錄 #include "ext/standard/php_smart_str_public.h" ^ 編譯中斷。 make: *** [memcache.lo] 錯誤 1
出現這種錯誤,缺少這個文件,剛開始沒多想,去網上找了一個這個文件的模板,添加了進來,
之后再make出現這種情況
這就游戲有些棘手了,因為不可能一個文件一個文件去改配置啊,所以錯誤不是在這;
在此之前我用低版本的L N M P編譯過memcache,一樣的源碼包,很正常,于是我又開了一個低版本的php測試,其他的配置都同高版本一樣(只有系統版本和php版本不一樣),memcache包也用的相同的;每一把都很正常的就ok了;
于是版本出的問題占百分之八十了。
我用make出的錯誤,去比較兩個模塊內的文件
左邊是正常版本,右邊是最新版本php的文件列表,很清楚地知道make調用的php_smart_str_public.h跟老版本中的文件對應,而新版本中也有這個文件,只不過名字變了,所以找不到;
當我把新版的文件改成對應的名字之后,文件便存在了,只不過他又會去報各種配置參數的錯(如上),所以在此我就確定是因為php版本太高,已經和PECL內的模塊編譯對應的文件和參數不再匹配,而導致了這一系列的錯誤。
不過幸好的是,php7.0本身就自帶Zend模塊,只需在配置文件php.ini中打開選項即可
問題就到這了。。。。。。。。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。