目次
1. PHP のインストールとエラーのトラブルシューティング
ホームページ バックエンド開発 PHPチュートリアル phpとmemcacheのLinuxインストール手順記録

phpとmemcacheのLinuxインストール手順記録

Jun 23, 2016 pm 01:51 PM
memcache php インストール 記録 プロセス

インストール環境はUbuntu13.10バージョンi386です。nginxサーバーとmysqlサーバーがインストールされています。現在のタスクはphpとmemcacheをインストールすることです。余計なことは言わずに本題に入りましょう。

1. PHP のインストールとエラーのトラブルシューティング

PHP をインストールする前に多くのライブラリ ファイルをインストールする必要があるため、忍耐強く特定の順序でインストールする必要があります。次の順序でインストールしました:

zlib -> freetype -> libxml2 -> libpng -> libgd2 -> libmcrypt

zlib、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
ログイン後にコピー
の説明: これは、libXpm ライブラリがインストールされておらず、gd2 ライブラリのインストール時に開くように構成されていないことを示すプロンプトです。

このように、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
ログイン後にコピー
このようにインストールしたら、大丈夫だと思ったので、gd2 ライブラリを再インストールし、gd2 の設定時に --with-xpm=/usr/lib という行を追加しました。

しかし、設定するときに、xpm ライブラリが見つからないというメッセージが表示されます。ここでは、次のように、/usr/lib に実際の xpm ライブラリ ファイルへのソフト リンク ファイルを作成します。

操作 完了したら、gd2 ライブラリを再インストールできます。設定は正常に完了しました。


「Xpm ライブラリのサポート: はい」という項目が表示され、設定が成功したことを示し、make && make を実行します。 install で gd2 ライブラリのインストールを完了できます。

すべてのライブラリ ファイルをインストールした後、PHP インストールを構成できます。以前は構成が成功していましたが、コンパイル エラーが発生したため、今回は構成に --with-xpm-dir=/usr/lib/ を追加する必要があります。コンパイルに成功します。完全な設定は次のとおりです。

sudo apt-get install libXpm-dev
ログイン後にコピー
設定、make、make install を実行すると、php のインストールを完了できます。次に、


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
ログイン後にコピー
を使用して php-fpm サービスを開始します。このコマンドを自己開始サービスとして /etc/rc.local ファイルに追加できます。

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
ログイン後にコピー
memcached サービスの起動パラメータの説明 :

-p TCP リスニング ポート、デフォルトは 11211

-l 接続の IP アドレス、デフォルトはローカル マシン

-d memcached を開始しますservice

-d restart memcached サービスを再起動します

-d stop |shutdown 実行中の memcached サービスをシャットダウンします
-d install memcached サービスをインストールします

-d uninstall memcached サービスをアンインストールします
-u の場合にのみ有効ですroot として実行)
-m 最大メモリ使用量、単位は MB。デフォルトは 64MB
-M メモリが枯渇した場合、項目を削除する代わりにエラーを返します
-c 同時接続の最大数、デフォルトは 1024 です
-C は CAS の使用を無効にします
-P PID によって保存されたファイル名、 -d オプションでのみ呼び出されます
-f ブロック サイズの増加係数、デフォルトは 1.25 -n 最小割り当てスペース、デフォルトのキー + 値 + フラグは 48 です
-t 使用されるスレッドの数、デフォルトははい 4
-b バックアップ ログ キューのサイズを設定します、デフォルトは 1024 です
-R 各イベントの最大リクエスト数を設定します、デフォルトは 20 です
-h ヘルプを表示します


以下の図から memcached サーバーが有効になっているかどうかを確認できます:




ポート 11211 が LISTEN 状態であることがわかり、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
ログイン後にコピー

但是我遇到的问题是,不论使用上述哪个方法,最终的结果都是要使用phpize工具为memcache生成配置文件,而这个需要autoconf这个库,从之前安装php的配置中可以看出,我并有安装autoconf库,因此我使用上述两种方法安装都会报同样的错:


同样,当我使用源码包安装的时候,进入到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");^
ログイン後にコピー
这个问题我在网上查找,发现不仅仅是安装M4会出现,很多人安装其他的库的时候也会出现类似问题,也找到有人更改 _GL_WARN_ON_USE进行hack,也有人说进行打补丁(这个问题的具体原因可能比较复杂,也没弄清)。但是我觉得我的ubuntu是13.10是比较新的版本,应该会有修复吧!于是我就重新下载了一个M4的最新版本:

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
ログイン後にコピー
按照上述命令安装就完成了autoconf的安装。

然后接着去安装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
ログイン後にコピー
安装完成如下图所示,最后出现的installed  shared extensions是在php的配置文件中进行配置memcache时候需要使用到的,需要保存下来。



配置php.ini文件,在/usr/local/php5.5/lib/php.ini,找到extension_dir这一行:

;extension_dir = "./" 改为extension_dir = "安装memcache完成后的目录路径"extension = "memcache.so" ;添加此行用于添加memcache扩展
ログイン後にコピー

使用如下的php代码进行测试:

<?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对这个依赖项需要调用时的一个寻找路径。晚饭时间到了,折腾了一天,看到一切都可以使用的时候还是感觉蛮不错的!希望有前辈可以解答我前面提到的一些疑惑!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

See all articles