インストール環境はUbuntu13.10バージョンi386です。nginxサーバーとmysqlサーバーがインストールされています。現在のタスクはphpとmemcacheをインストールすることです。余計なことは言わずに本題に入りましょう。
PHP をインストールする前に多くのライブラリ ファイルをインストールする必要があるため、忍耐強く特定の順序でインストールする必要があります。次の順序でインストールしました:
zlib -> freetype -> libxml2 -> libpng -> libgd2 -> libmcryptzlib、freetype、libpng(libjpeg) も必要です。などがあるため、最初にこれらをインストールしてから gd2 をインストールする必要があります。ここでのインストールは、一般的なディレクトリに従って /usr/local/xxx ディレクトリに設定されます。通常、freetype のインストール時に問題が発生する可能性があります。ここで記録しておきたいのは、エラーがなかったことです。 GD2 をインストールすると、インストールは成功しました。しかし、後からphpをインストールすると、構成でGD2のインストールディレクトリを設定した後、エラーが発生しました。configureでは問題ありませんでしたが、phpのインストール時にconfigureに時間がかかることを知っておく必要があります。それは正しいです、それはまた長い間待った後、突然コンパイルエラーを言いました、それは本当に少しクラッシュしました。エラーは次のとおりです:
注意,安装freetype时有可能提示如下错误: either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables 这是提示找不到libpng的安装位置,所以需要将libpng的bin目录配置到环境变量中:解决方法:编辑:vi /etc/profileLIB_PNG=/usr/local/libpng/binPATH=$LIB_PNG:$PATH export PATH 生效:. /etc/profile
このように、gd2 の以前の設定とインストールを確認したところ、次のように libXpm ライブラリがサポートされていないことがわかりました:
/usr/local/src/php-5.5.6/ext/gd/gd.c:57:22: error: X11/xpm.h: No such file or directorymake: *** [ext/gd/gd.lo] Error 1
そこで、解決策は libXpm ライブラリをダウンロードしてインストールすることです:
** Configuration summary for libgd 2.1.0: Support for Zlib: yes Support for PNG library: yes Support for JPEG library: no Support for VPX library: no Support for TIFF library: no Support for Freetype 2.x library: yes Support for Fontconfig library: no Support for Xpm library: no Support for pthreads: yes
しかし、設定するときに、xpm ライブラリが見つからないというメッセージが表示されます。ここでは、次のように、/usr/lib に実際の xpm ライブラリ ファイルへのソフト リンク ファイルを作成します。
操作 完了したら、gd2 ライブラリを再インストールできます。設定は正常に完了しました。
「Xpm ライブラリのサポート: はい」という項目が表示され、設定が成功したことを示し、make && make を実行します。 install で gd2 ライブラリのインストールを完了できます。
すべてのライブラリ ファイルをインストールした後、PHP インストールを構成できます。以前は構成が成功していましたが、コンパイル エラーが発生したため、今回は構成に --with-xpm-dir=/usr/lib/ を追加する必要があります。コンパイルに成功します。完全な設定は次のとおりです。
sudo apt-get install libXpm-dev
ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.a /usr/lib/libXpm.a ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so /usr/lib/libXpm.so ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4 /usr/lib/libXpm.so.4 ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4.11 /usr/lib/libXpm.so.4.11
nginx 設定ファイルに php のサポートを追加すると、php を使用して開発できるようになります。
2. memcache のインストールとエラー処理
Memcache はサーバーサイドと php エクステンションに分かれており、サーバーサイドはすべてのデータの保存や削除などの管理を行うための PHP 用の拡張ライブラリです。 memcache を使用します。 Use memcache システムの memcache サービスの呼び出しとアクセスに、PHP で直接新しい Memcache を使用することを示します。
(1) まず、サーバーをインストールする必要があります。ubuntu のデフォルトのインストールを直接使用できます:
./configure \ --prefix=/usr/local/php5.5 \ --with-libxml-dir=/usr/local/libxml2/ \ --with-png-dir=/usr/local/libpng/ \ --with-freetype-dir=/usr/local/freetype/ \ --with-gd=/usr/local/gd2/ \ --with-zlib-dir=/usr/local/zlib/ \ --with-mcrypt=/usr/local/libmcrypt/ \ --with-xpm-dir=/usr/lib/ \ --with-mysql \ --with-mysqli \ --enable-pdo \ --with-pdo-mysql \ --with-iconv \ --enable-soap \ --enable-mbstring=all \ --enable-sockets \ --enable-fpm
Memcache サーバーをインストールした後、次のコマンドを使用してサービスを開始します:
sudo /usr/loca/php5.5/sbin/php-fpm
-p
-d memcached を開始しますservice
-d restart memcached サービスを再起動します -d stop |shutdown 実行中の memcached サービスをシャットダウンします
-d install memcached サービスをインストールします
(2) memcache クライアントをインストールします
このインストールは、実際には、php がインストールされていることに基づいて、php をアンインストールせずに php を再インストールするのと似ています。 。
まず、php に付属の pecl インストーラーを使用できます:
/usr/local/php5.5/bin/pecl install memcache
wget http://pecl.php.net/get/memcache-2.2.6.tgz
同样,当我使用源码包安装的时候,进入到memcache源码包后,需要使用/usr/local/php5.5/bin/phpize工具来生成configure文件,会与上图报同样的错误。从此处也可以说明,上述两种安装方式都是殊途同归,原理都一样。
为此,我需要去安装autoconf库,但是在安装这个库的时候,同样会报错:
这里可以明显看出,就是M4版本太低,需要更新。通过查阅资料知晓,autoconf使用M4宏处理器处理configure.in文件,从而可以生成configure文件用于安装配置。
然后,就是去下载M4源码进行安装了,这里又有一个坑,我安装提示的去下载推荐的 M41.4.16版本的源码包,配置成功,但是编译的时候会出现类似下面的问题:
./stdio.h:477:1: error: 'gets' undeclared here (not in a function)_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");^
wget http://ftp.gnu.org/gnu/m4/m4-latest.tar.gztar -zxf m4-latest.tar.gz;mv m4-1.4.17 /usr/local/m4cd /usr/local/m4./configuremakemake insatll
按照上面步骤安装的时候,奇迹出现了,果然可以编译安装完成,没有任何问题。此处得出的结论是,作为软件使用者和开发者我们一定要适合保持软件的更新,尽量使用最新的稳定的版本,这样可以避免遇到很多奇怪的问题。
安装时把解压包放到/usr/local/m4下,然后直接configure不指定prefix才可以安装autoconf,否则也会同样的找不到M4的错误。
安装autoconf如下:
export PATH=/usr/local/m4:$PATHcd autoconf./configure --prefix=/usr/local/autoconfmakemake install
然后接着去安装memcache,此时,使用export将/usr/local/autoconf/bin导入到PATH并不起作用,因此我尝试使用了如下的命令:
sudo ln -s /usr/local/autoconf/bin/autoconf autoconfsudo ln -s /usr/local/autoconf/bin/autoheader autoheadersudo ln -s /usr/local/autoconf/bin/autom4te autom4tesudo ln -s /usr/local/autoconf/bin/autoreconf autoreconfsudo ln -s /usr/local/autoconf/bin/autoscan autoscansudo ln -s /usr/local/autoconf/bin/autoupdate autoupdatesudo ln -s /usr/local/autoconf/bin/ifnames ifnames
做了这些符号链接之后,我重新进入memcache源码文件使用phpize工具就没问题了,成功生成了configure文件:
./configure \ >--with-php-config=/usr/local/php5.5/bin/php-config \ >--enable-memcache=/usr/bin/memcachedmakemake install
配置php.ini文件,在/usr/local/php5.5/lib/php.ini,找到extension_dir这一行:
;extension_dir = "./" 改为extension_dir = "安装memcache完成后的目录路径"extension = "memcache.so" ;添加此行用于添加memcache扩展
<?php //Test memcache $mem = new Memcache; $mem->connect('127.0.0.1', 11211); echo '<pre class="brush:php;toolbar:false">'; var_dump($mem); var_dump(class_exists("Memcache"));?>
通过上述的种种艰辛,不仅是完成了安装的任务,也让我进一步熟悉了linux下安装软件的各种值得注意的地方。安装gd2库的时候需要依赖Xpm库,这个问题其实是在安装好了gd2后安装php的时候出现的,然后又重新安装gd2,特别是安装Xpm后,使用了符号链接之后,就可以安装带有Xpm的gd2库了。这个方法是一个启示!在后面安装autoconf完成后,使用PATH变量失效时是当时突然想起符号链接这个方法,因此就自己尝试性使用并解决了问题。还有就是安装M4的时候,版本问题可能牵涉出很多底层的问题,这个我也没弄清楚,当时也是尝试性的使用最新版本安装就可以解决了。最后安装memcache的时候就比较顺利了。同时也发现网上有很多安装php的时候就使用配置选项--with-autoconf选项直接一步安装了autoconf,这样就可以直接使用phpize工具了,但是我这里没有安装,虽然让我费了周折,但是最后单独安装了autoconf之后,使用符号链接指定安装的autoconf路径,然后phpize就可以从PATH中的/usr/bin这个路径下找到,因此这也说明了安装php是指定配置选项应该就是指定了php对这个依赖项需要调用时的一个寻找路径。晚饭时间到了,折腾了一天,看到一切都可以使用的时候还是感觉蛮不错的!希望有前辈可以解答我前面提到的一些疑惑!