PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.
- 1 Installation
- 2 Running
- 3 Configuration
- 4 Extensions
- 5 Caching
- 6 Development tools
- 7 Troubleshooting
- 8 See also
Note that to run PHP scripts as plain CGI, you need thepackage.
To run PHP standalone issue the
php -S localhost:8000 -t public_html/ command. See documentation.
The main PHP configuration file is well-documented and located at
- It is recommended to set your timezone (list of timezones) in
date.timezone = Europe/Berlin
- If you want to display errors to debug your PHP code, change
A number of commonly used PHP extensions can also be found in the official repositories:
$ pacman -Ss php-
/etc/php/php.ini, a extension may be enabled/configured in the
/etc/php/conf.ddirectory instead (e.g.
# pecl install imagick. The pecl binary is included in the AUR package. Then add
If you wish to have POSIX multi-threading you will need the pthreads extension. To install the pthreads (http://pecl.php.net/package/pthreads) extension using
pecl you are required to use a compiled version of PHP with the the thread safety support flag
--enable-maintainer-zts. Currently the most clean way to do this would be to rebuild the original package with the flag.
Instruction can be found on the PHP pthreads extension page.
If you want the
mcrypt module, install and uncomment the line in
PCNTL allows you to create process directly into the server side machine. While this may seen as something you would want, it also gives the power to PHP to mess things up really bad. So it is a PHP extension that cannot be loaded like other more convenient extension. This is because of the great power it gives to PHP. To enable it (by default it is disabled) PCNTL has to be compiled into PHP.
Install and configure MySQL/MariaDB as described in MariaDB.
Uncomment the following lines in
mysql.sowas removed in PHP 7.0.
You can add minor privileged MySQL users for your web scripts. You might also want to edit
/etc/mysql/my.cnf and uncomment the
skip-networking line so the MySQL server is only accessible by the localhost. You have to restart MySQL for changes to take effect.
Install and configure PostgreSQL, then install the package and uncomment the following lines in
Install and configure SQLite, then install the package and uncomment the following lines in
There are two kinds of caching in PHP: opcode/bytecode caching and userland/user data caching. Both allow for substantial gains in applications speed, and therefore should be enabled wherever possible.
OPCache comes bundled with the standard PHP distribution, therefore to enable it you simply have to add or uncomment the following line in your PHP configuration file:
A list of its options and suggested settings can be found in its official entry on the PHP website.
zend_mm_heap corruptedbeing produced.
APCu can be installed with the
/etc/php/conf.d/apcu.ini, or adding it to your PHP configuration file:
Its author recommends a few suggested settings, among which:
apc.shm_size=32Mare not really required as they represent the default values;
apc.ttl=7200on the other hand seems rather beneficial;
apc.enable_cli=1, which although not recommended by the manual may be required by some software such as ownCloud.
/etc/php/conf.d/apcu.inior directly to your PHP configuration file. Just make sure not to enable the extension twice as it will result in errors being diplayed in the system logs.
Aptana Studio is an IDE for programming in PHP and web development. It can be installed with the AUR package. Does not have a PHP debugger as of version 3.2.2.
JetBrains PhpStorm is a commercial, cross-platform IDE for PHP built on JetBrains' IntelliJ IDEA platform. It can be installed with the AUR package, or with AUR for the 30-day trial version. You can get a free license for education from Jetbrains.
Zend Studio is the official PHP IDE, based on eclipse. The IDE has autocomplete, advanced code formatting, WYSIWYG html editor, refactoring, and all the eclipse features such as db access and version control integration and whatever you can get from other eclipse plugins. You can install it with the AUR package.
PHP Fatal error: Class 'ZipArchive' not found
Ensure the zip extension is enabled.
$ grep zip /etc/php/php.ini
/etc/php/php.ini not parsed
php.ini is not parsed, the ini file is named after the sapi it is using. For instance, if you are using uwsgi, the file would be called
/etc/php/php-uwsgi.ini. If you are using cli, it is
PHP Warning: PHP Startup: <module>: Unable to initialize module
php, this error indicates that the aforementioned module is out of date. This will rarely happen in Arch Linux, since maintainers make sure core PHP and all modules be only available in compatible versions.
This might happen in conjunction with a module compiled from the AUR. You usually could confirm this by looking at the dates of the files
To fix, find a compatible update for your module, probably by looking up the AUR using its common name.
If it applies, flag the outdated AUR package as outdated.