SlideShare una empresa de Scribd logo
1 de 2
Install APC for PHP on Linux
Posted February 6th, 2008 in PHP (Updated November 5th, 2008)

APC is the Alternative PHP Cache, which is a free, open, and robust framework for caching and optimizing PHP
intermediate code. What this means is that APC reads your PHP files, parses them into a more efficient binary
format and then caches them in memory so that each request for your PHP files and PHP library files can be fed
from the parsed cache. This will generally lead to a speed increase when serving a PHP site, especially one with
a lot of library files. This post looks at how to install APC for PHP on Linux. The Linux distribution I used was
CentOS 5, but it should be fairly similar for most distros.

First of all you need to download the APC code from the PHP PECL library. So change directory to somewhere
like /tmp and then get the latest version like so:

$ wget http://pecl.php.net/get/APC

This will always get the latest version, and in my case when I installed it just now downloaded APC-3.0.16.tgz
like so:

--22:58:41-- http://pecl.php.net/get/APC Resolving pecl.php.net... 216.92.131.66
Connecting to pecl.php.net|216.92.131.66|:80... connected. HTTP request sent,
awaiting response... 200 OK Length: 114298 (112K) [application/octet-stream] Saving
to: `APC-3.0.16.tgz' 100%[=====================>] 114,298     97.1K/s   in 1.1s
22:58:43 (97.1 KB/s) - `APC-3.0.16.tgz' saved [114298/114298]

So then you need to extract the files:

$ tar -zxf APC-3.0.16.tgz

and change into the APC directory:

$ cd APC-3.0.16

 The next step is to run the "phpize" command. This requires that you have PHP development package installed.
On CentOS this is php-devel (installed by running "yum install php-devel") and it should have a similar name on
other Linux distros.

$ phpize Configuring for: PHP Api Version:         20041225 Zend Module Api
No:      20050922 Zend Extension Api No:   220051025

You then configure APC, telling it where the executable file php-config is. If you don't know where this is, then do
this:

$ whereis php-config

which will return something like:

php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

and then run the configure command like so:

./configure --enable-apc --enable-apc-mmap --with-apxs --with-php-
config=/usr/bin/php-config
This will go ahead and do some configuring stuff which will look something like this:

checking for egrep... grep -E checking for a sed that does not truncate output... /
bin/sed ... checking dynamic linker characteristics... GNU/Linux ld.so checking how
to hardcode library paths into programs... immediate configure: creating
./config.status config.status: creating config.h

Now that configure is done, it's just a matter of running make :

$ make ... Libraries have been installed in:     /tmp/APC-3.0.16/modules If you ever
happen to want to link against installed libraries in a given directory, LIBDIR,
you must either use libtool, and specify the full pathname of the library, or use
the `-LLIBDIR' flag during linking and do at least one of the following:     - add
LIBDIR to the `LD_LIBRARY_PATH' environment variable       during execution    - add
LIBDIR to the `LD_RUN_PATH' environment variable       during linking    - use the
`-Wl,--rpath -Wl,LIBDIR' linker flag    - have your system administrator add LIBDIR
to `/etc/ld.so.conf' See any operating system documentation about shared libraries
for more information, such as the ld(1) and ld.so(8) manual pages.
---------------------------------------------------------------------- Build
complete. (It is safe to ignore warnings about tempnam and tmpnam).

and then make install:

$ make install Installing shared extensions:                        /usr/lib64/php/modules/

and restarting the Apache web server:

/etc/init.d/httpd restart

The APC cache will now be enabled. You can confirm this by creating a script which calls the phpinfo()
command and looking for the APC section. It will have been switched on by default by adding a
"extension=apc.so" line to your /etc/php.ini file, but you may want to add more settings to configure it more. The
INSTALL file suggests this (I have put the default values at the end of each line which is what is set if you don't
set anything in the php.ini file):

apc.enabled=1       # default = 1 apc.shm_segments=1 # default = 1
apc.shm_size=128    # default = 30 apc.ttl=7200        # default = 0
apc.user_ttl=7200   # default = 0 apc.num_files_hint=1024 # default = 1000
apc.mmap_file_mask=/tmp/apc.XXXXXX # default = no value apc.enable_cli=1                                    #
default = 0

And that's all there is to it. There is also a monitoring script available so you can see what's being cached and
how much memory is being used etc. You can read about this in my "Displaying PHP APC Cache Information"
post.

Update November 5th 2008: I just installed this on another server and I didn't have any issues installing it but it
didn't add the extension=apc.so line to the /etc/php.ini file automatically. So if it doesn't appear to be working,
check the php.ini to ensure the line is there and add it if not.

Más contenido relacionado

Más de wensheng wei

高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术
wensheng wei
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施
wensheng wei
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zend
wensheng wei
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journey
wensheng wei
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
wensheng wei
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:
wensheng wei
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解
wensheng wei
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guide
wensheng wei
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法
wensheng wei
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10
wensheng wei
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧
wensheng wei
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件
wensheng wei
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数
wensheng wei
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程
wensheng wei
 
LINUX Admin Quick Reference
LINUX Admin Quick ReferenceLINUX Admin Quick Reference
LINUX Admin Quick Reference
wensheng wei
 
上海实习有感
上海实习有感上海实习有感
上海实习有感
wensheng wei
 

Más de wensheng wei (20)

高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zend
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journey
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guide
 
issue35 zh-CN
issue35 zh-CNissue35 zh-CN
issue35 zh-CN
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法
 
Subversion FAQ
Subversion FAQSubversion FAQ
Subversion FAQ
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10
 
ubunturef
ubunturefubunturef
ubunturef
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程
 
Java学习路径
Java学习路径Java学习路径
Java学习路径
 
LINUX Admin Quick Reference
LINUX Admin Quick ReferenceLINUX Admin Quick Reference
LINUX Admin Quick Reference
 
上海实习有感
上海实习有感上海实习有感
上海实习有感
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 

Último (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 

Install APC for PHP on Linux

  • 1. Install APC for PHP on Linux Posted February 6th, 2008 in PHP (Updated November 5th, 2008) APC is the Alternative PHP Cache, which is a free, open, and robust framework for caching and optimizing PHP intermediate code. What this means is that APC reads your PHP files, parses them into a more efficient binary format and then caches them in memory so that each request for your PHP files and PHP library files can be fed from the parsed cache. This will generally lead to a speed increase when serving a PHP site, especially one with a lot of library files. This post looks at how to install APC for PHP on Linux. The Linux distribution I used was CentOS 5, but it should be fairly similar for most distros. First of all you need to download the APC code from the PHP PECL library. So change directory to somewhere like /tmp and then get the latest version like so: $ wget http://pecl.php.net/get/APC This will always get the latest version, and in my case when I installed it just now downloaded APC-3.0.16.tgz like so: --22:58:41-- http://pecl.php.net/get/APC Resolving pecl.php.net... 216.92.131.66 Connecting to pecl.php.net|216.92.131.66|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 114298 (112K) [application/octet-stream] Saving to: `APC-3.0.16.tgz' 100%[=====================>] 114,298 97.1K/s in 1.1s 22:58:43 (97.1 KB/s) - `APC-3.0.16.tgz' saved [114298/114298] So then you need to extract the files: $ tar -zxf APC-3.0.16.tgz and change into the APC directory: $ cd APC-3.0.16 The next step is to run the "phpize" command. This requires that you have PHP development package installed. On CentOS this is php-devel (installed by running "yum install php-devel") and it should have a similar name on other Linux distros. $ phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20050922 Zend Extension Api No: 220051025 You then configure APC, telling it where the executable file php-config is. If you don't know where this is, then do this: $ whereis php-config which will return something like: php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz and then run the configure command like so: ./configure --enable-apc --enable-apc-mmap --with-apxs --with-php- config=/usr/bin/php-config
  • 2. This will go ahead and do some configuring stuff which will look something like this: checking for egrep... grep -E checking for a sed that does not truncate output... / bin/sed ... checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate configure: creating ./config.status config.status: creating config.h Now that configure is done, it's just a matter of running make : $ make ... Libraries have been installed in: /tmp/APC-3.0.16/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. (It is safe to ignore warnings about tempnam and tmpnam). and then make install: $ make install Installing shared extensions: /usr/lib64/php/modules/ and restarting the Apache web server: /etc/init.d/httpd restart The APC cache will now be enabled. You can confirm this by creating a script which calls the phpinfo() command and looking for the APC section. It will have been switched on by default by adding a "extension=apc.so" line to your /etc/php.ini file, but you may want to add more settings to configure it more. The INSTALL file suggests this (I have put the default values at the end of each line which is what is set if you don't set anything in the php.ini file): apc.enabled=1 # default = 1 apc.shm_segments=1 # default = 1 apc.shm_size=128 # default = 30 apc.ttl=7200 # default = 0 apc.user_ttl=7200 # default = 0 apc.num_files_hint=1024 # default = 1000 apc.mmap_file_mask=/tmp/apc.XXXXXX # default = no value apc.enable_cli=1 # default = 0 And that's all there is to it. There is also a monitoring script available so you can see what's being cached and how much memory is being used etc. You can read about this in my "Displaying PHP APC Cache Information" post. Update November 5th 2008: I just installed this on another server and I didn't have any issues installing it but it didn't add the extension=apc.so line to the /etc/php.ini file automatically. So if it doesn't appear to be working, check the php.ini to ensure the line is there and add it if not.