phpとmemcacheのLinuxインストール手順記録
インストール環境はUbuntu13.10バージョンi386です。nginxサーバーとmysqlサーバーがインストールされています。現在のタスクはphpとmemcacheをインストールすることです。余計なことは言わずに本題に入りましょう。
1. PHP のインストールとエラーのトラブルシューティング
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 サービスをインストールします
-u
-m
-M メモリが枯渇した場合、項目を削除する代わりにエラーを返します
-c
-C は CAS の使用を無効にします
-P
-f
-t
-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");^
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代码进行测试:
<?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对这个依赖项需要调用时的一个寻找路径。晚饭时间到了,折腾了一天,看到一切都可以使用的时候还是感觉蛮不错的!希望有前辈可以解答我前面提到的一些疑惑!

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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