PHP
PHP is a server-side scripting library.
Installation
The instructions here will compile the latest version of PHP as an apache module for a prepackaged apache installation under a RedHat based system (such as CentOS, Fedora, ScientificLinux). The steps below will make use of apxs2 from the http-tools package. If you wish to install PHP with suPHP, see suPHP.
## Install rpmforge repo
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
# rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
## Install all prerequisites.
# yum -y install make autoconf g++ gcc-c++ libtermcap-devel libgcc-c++ libtool gcc libpng-devel libjpeg-devel libxml1-devel libxml2-devel curl curl-devel libmcrypt libmcrypt-devel libtool-ltdl-devel libxml2.x86_64 libxml2-devel.x86_64 curl-devel.x86_64 openssl-devel httpd-devel
# Compile PHP
# Go to the PHP source directory, then run:
# ./configure --with-apxs2 --with-config-file-path=/etc --with-gd --enable-shmop --enable-ftp --enable-sockets --enable-exif --enable-zip --enable-sysvsem --enable-sysvsem --enable-sysvshm --with-jpeg-dir --with-png-dir --enable-mbstring --enable-embedded-mysqli=shared --with-curl --with-mcrypt --with-mysql --with-mysqli --with-openssl --with-zlib --with-pdo-mysql --with-libdir=lib64
Add --with-libdir=lib64 if you need to reference 64bit libraries. By default, configure will only search in /usr/lib rather than /usr/lib64.
Run {{code|make and {{code|make install. If you had enabled apache apxs2 above, then it should have enabled the PHP module in apache automatically in Template:/etc/httpd/conf/httpd.conf. If that failed for whatever reason, you could create an included config at /etc/httpd/conf.d/php.conf with the following contents:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
# Of if you use PHP 7, use: LoadModule php7_module modules/libphp7.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
AddType application/x-httpd-php-source .phps
Troubleshooting
PDOException : could not find driver
You need to have the pdo driver installed. In my case, I was trying to use the pdo-mysql connector which wasn't compiled with PHP. To fix this, install the PDO driver or compile it manually with:
--with-pdo-<driver>
In my case, I needed mysql:
--with-pdo-mysql
UTF-8 to hex
There is basically NO good way.
- http://www.tokyomuslim.com/2008/01/php-convert-utf-8-to-hex-codepoint-values-unicode-hexidecimal/
- http://hsivonen.iki.fi/php-utf8/
Error Reporting
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);