[精讚] [會員登入]
285

[APACHE] PHP<5.5及 PHP>=5.5 安裝APC

php5.5版後的apc只能手動安裝,此文包含php<5.5及php>=5.5兩種安裝方法

此文完整連結 http://n.sfs.tw/10580

複製連結 [APACHE] PHP<5.5及 PHP>=5.5 安裝APC@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-01-09 12:34:22 最後編修
2017-01-09 10:05:47 By 瘦河馬
 

什麼是apc?

Alternative PHP Cache (APC) 是 PHP 的程式碼快取,讓你的程式在第一次執行時編好,接下來的存取就不必再重編以加快速度。

PHP5.5版以後,apc已被zend opcache所取代,所以不再具有作用,會變成模擬狀態;對於php<5.5版的,以下的安裝還是適用。

OS

CentOS release 6.5 (Final)

PHP <5.5 安裝APC

php在5.5版以下,可以直接使用 pecl來安裝,你必需要有pecl和phpize這兩個執行檔,以下是可能的步驟:

1. 安裝 phpize

  # yum install php-devel

  或(關於webtatic repos.請參考備註)
  # yum --enablerepo=webtatic install php-devel

2. 安裝 pecl

  # yum install php-pear

  或
  # yum --enablerepo=webtatic install php-pear

3. 安裝 apc

  # pecl install apc

PHP >=5.5 安裝APC

當PHP>=5.5時,直接用上面的安裝會出錯

/var/tmp/APC/apc_compile.c: In function 「my_copy_class_entry」:
/var/tmp/APC/apc_compile.c:755: 警告:永遠不相容的指標類型賦值
/var/tmp/APC/apc_compile.c: In function 「apc_copy_class_entry_for_execution」:
/var/tmp/APC/apc_compile.c:1956: 警告:永遠不相容的指標類型賦值
/var/tmp/APC/apc_compile.c: In function 「apc_copy_trait_alias」:
/var/tmp/APC/apc_compile.c:2379: 錯誤:「zend_trait_alias」 沒具名為 「function」 的成員
/var/tmp/APC/apc_compile.c:2380: 錯誤:「zend_trait_alias」 沒具名為 「function」 的成員
/var/tmp/APC/apc_compile.c:2380: 錯誤:「zend_trait_alias」 沒具名為 「function」 的成員
/var/tmp/APC/apc_compile.c: In function 「apc_copy_trait_precedence」:
/var/tmp/APC/apc_compile.c:2416: 錯誤:「zend_trait_precedence」 沒具名為 「function」 的成員
/var/tmp/APC/apc_compile.c:2417: 錯誤:「zend_trait_precedence」 沒具名為 「function」 的成員
/var/tmp/APC/apc_compile.c:2417: 錯誤:「zend_trait_precedence」 沒具名為 「function」 的成員

還好有網友[2] 提供直接tarball的安裝法:

1. 下載 tarball

http://git.php.net/?p=pecl/caching/apc.git;a=summary

2. 解壓

# tar zvfx apc-6a90406.tar.gz
# cd apc-6a90406

3. 安裝
# phpize

如果沒有phpize這個程式,請參考最上方安裝phpize

確認php-config的位置
# whereis php-config
php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

組態
# ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/bin/php-config

編譯
# make
# make install

4. 重啟APACHE生效

# apachectl restart

查看
# php -m |grep 'apc'

# php -m | grep 'apc'
apc
apcu

# php -i

apc

APC support => Emulated

apcu

APCu Support => Disabled
Version => 4.0.11
APCu Debugging => Disabled
MMAP Support => Enabled
MMAP File Mask => /tmp/apc.XXXXXX
Serialization Support => Disabled
Revision => $Revision: 328290 $
Build Date => May  4 2016 17:40:03

Directive => Local Value => Master Value
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.entries_hint => 4096 => 4096
apc.gc_ttl => 3600 => 3600
apc.mmap_file_mask => /tmp/apc.XXXXXX => /tmp/apc.XXXXXX
apc.preload_path => no value => no value
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.rfc1867_ttl => 3600 => 3600
apc.serializer => php => php
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => On => On
apc.smart => 0 => 0
apc.ttl => 0 => 0
apc.use_request_time => On => On
apc.writable => /tmp => /tmp

設定

接下來要進行細節的設定

1. 將apc.php複製到網頁

# cd apc-6a90406
# cp apc.php /var/www/html/

2. 打開瀏覽器

3. 修改 php.ini 的設定

# vi /etc/php.d/apcu.ini

apc.enabled=1
apc.shm_size="60M"
apc.shm_segments=2
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1

4. 修改apc.php

尋找並修改預設的密碼

defaults('ADMIN_USERNAME','root');          // Admin Username
defaults('ADMIN_PASSWORD','12345678');    // Admin Password - CHANGE THIS TO ENABLE!!!

5. 重啟apache

移除APC/ 移除APCU

# pecl uninstall apcu
PHP Warning:  PHP Startup: apc.shm_segments setting ignored in MMAP mode in Unknown on line 0
uninstall ok: channel://pecl.php.net/apcu-4.0.11
# rm /etc/php.d/apcu.ini

重啟apache生效

參考資料

[1] 安裝apc http://2bits.com/articles/installing-php-apc-gnulinux-centos-5.html

[2] http://www.cnblogs.com/study-notes/articles/5365332.html


原文編修自 2013-03-01 16:36:20

你可能感興趣的文章

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

[CentOS] 新增修改及刪除使用者 新增、修改、刪除使用者和群組

[Centos7] 新的防火牆firewalld Centos7新的防火牆firewalld 和前面的iptables有很大的不同

[CentOS] 設定和使用quota quota 的觀念已經很老了,不過每次都會忘記所以寫下來,有需要觀念的朋友請參看鳥哥的網站吧

[Centos] 安裝及使用postfix,設定虛擬帳號及轉寄 使用postfix來設定虛擬帳號及轉寄

[CentOS] 改錯fstab 無法開機怎麼辦? Linux 改錯fstab 無法開機怎麼辦?

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

[Centos7] 安裝 semanage (selinux工具程式) 安裝selinux的工具程式 semanage

[Centos7] 安裝sphinx+php7 在centos7上安裝sphinx,在PHP7上運作正確

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?