Enabling apc (php alternative cache) on your Centos VPS

Here is how to enabled php’s apc on a CentOS VPS:

1. yum -y install php-pear pcre-devel php-pear php-devel httpd-devel gcc
2. pecl install apc (press enter to accept the default response for each option)
3. echo “extension=apc.so” > /etc/php.d/apc.ini
4. service httpd restart
5. cp /usr/share/pear/apc.php /home/YOUR_USER_NAME/www/some_private_file_name.php

The apc.php page can be loaded to view the cache status. We recommend you rename it to something other than apc.php

Hide eregi() deprecated errors

Question:

My script gives errors like:

Deprecated: Function eregi() is deprecated in /home/my_username/www/path/contact/include/fgcontactform.php on line 548

Why is this occuring? How can I fix it?

Answer:

Newer php versions are removing support for the eregi() function. Your script will continue to work but using normal php.ini settings the deprecated errors are shown. You can hide the errors by adding:


error_reporting = E_ALL & ~E_DEPRECATED

to your /home/username/etc/php.ini file

Create the file if it does not exist. If you already have a error_reporting line, modify it hide E_DEPRECATED

If you are on a VPS, edit /etc/php.ini and restart httpd if you are running mod_php.

You should also work to update your script to no longer call the deprecated functions as future versions of php will remove support for the functions completely.

How do I upgrade php on a VPS?

Question:

The php version on my VPS is out of date. How do I update it?

Answer:

Using the OS vendors normal update command can get you some updates (but perhaps not what you want – see below). For example on RedHat/CentOS run:

yum update php

However usually the OS vendors versions are not the latest. The update them to patch security issues but many times are far out of date from what you may require.

To update RedHat/CentOS to a newer php run these commands:


yum erase php-pdo php-xml php-mysql php php-common php-cli php-gd php-mbstring php-devel

yum install php53-pdo php53-xml php53-mysql php53 php53-common php53-cli php53-gd php53-mbstring

/sbin/service httpd restart

A note:

These are “unofficial” RPM’s as RedHat only official supports a particular (semi-old) version and backports security fixes to it – good for large corporate users but not so great for active developers). However the RPMS’s above are widely used in the community and most developers view them as trustworthy (just important to note that they are not actually from RedHat).

Converting from mod_php to php-cgi : Steps to take for a seemless upgrade

Question:

I’d like to change from mod_php to php-cgi. What steps should I take to make sure the change is smooth?

Answer:

Most conversions are as simple as selecting the new version to use in the control panel. If a small amount of possible downtime on your site is acceptable you may want to just try the change and see. In the worst case, you’ll have to wait as long as 15 minutes to switch back to the old version.

The server looks for changes and reloads (if needed) your php configuration every 15 minutes. If you make the change and find you site has problems, you’ll need to “undo” the change by selecting the version you were running previously. You’ll then need to wait for the server to reload your config. Note: During this time your site still runs – there is no downtime – but it does not run the new php version.

If you want near-zero probability of problems (or if you tried the approach above and ran it problems), we recommend the following:

1. Make sure there are no files owned by the generic server user “nobody”. Do this:

find /home/your_user_name_here -user nobody -print

If it shows files owned by nobody, you’ll need to put in a support request for an admin to change the ownership back to your own username.

2. Use the php.ini file that your site was running under before :


mkdir /home/your_username_here/etc/
cp /usr/local/lib/php.ini /home/your_username_here/etc/

4. Make sure date.timezone is set in php.ini. A common problem ugprading to php5.3 is not having date.timezone set. It needs to be set either in your code or (easier) in php.ini

An example for EST timezone is :

date.timezone = 'America/New_York'

5. Check the php.net changelog documentation for any functions that have been removed or changed between the version you are currently running and the version you are upgrading to.

PHPMailer will not send out mail. I get an error with PHPMailer.

Question:

Using PHPMailer, I get errors when sending out mail. Any ideas?

Answer:

If you have code like :

$mail->IsSMTP();

and

$mail->Host = "localhost";

in your code. Change it to:

$mail->IsSendmail();

The IsSMTP() call tells PHPMailer to send via your local SMTP server. However in most cases this will not work with-out authenticating yourself. You can use PHPMailer to also do an auth but if you are sending to an SMTP server on the local server (ie. “localhost”) – it is much better to do this via sendmail directly. The call to :

$mail->IsSendmail();

tells PHPMailer to do this.

Why does my website run an old version of php?

Change php version control panel screenshot

Question:

I noticed my website is not running the latest version of php. Why not?

Answer:

You can change your php version at any time by going to the php section of your control panel. Normally, we do not update your php version (other than for security patches) automatically in case your scripts rely a certain version being used. We do force minor revision upgrades that address security issues, etc.

In the past we kept all users up-to-date on the latest php versions but found that in many instances the major updates (from 4 to 5, 5.1 to 5.2 to 5.3, etc.) would break client sites. It was rare but happened enough for us to change our policy.

To summarize:

  • You can change your php version in the “php” section of the control panel
  • We perform security related upgrades automatically
  • Major version upgrades are not performed automatically. Instead, use the (one click) version update selector in the control panel

browser tries to download php

Browser tries to download php pages screenshot

Question:

Sometimes my browser tries to download or save php files from my website. What causes this? How can it fix it?

Answer:

This can happen for a variety of reasons. However we frequently see it when a page is timing out. If you are connecting to a remote database make sure that the database is up and that dns is resolving correctly for it.

Increase php timeouts with .htaccess

If you are running mod_php you may experience problems with big uploads and imports (or other long running processes).

You can adjust php’s default timeouts using a .htaccess file.

Create a file called .htaccess and put the code:

# increase php time-out limits
php_value max_execution_time 1000
php_value max_input_time 1000

inside it. Put the .htaccess file into the top-most directory of your site. If you already have a .htaccess
file, add the code above to the end of it.

This should solve you problem in most cases.

If it does not, try to increase the times (1000). If the problem persists, open a support ticket and include the URL, click path and any needed usernames and passwords. We will duplicate the problem and attempt to adjust your php execution times to make your script work.

Note: if you are running php as a cgi, you’ll need to adjust your /etc/php.ini file. Adding directives to .htaccess files has no effect on installs using php-cgi.

Running a different php version for only part of my website

Q: I want to change my PHP version to for only part of my website. How do I do this? Hi,

A: The recommended method is to make a file called:

.htaccess

(the leading dot is required)

inside the top level directory for which you want to change the php version.

Inside the file put this:

AddHandler custom-php .php .pcgi .phtml .inc .phtml~ .php~ .inc~ .html~
Action custom-php /cgi-sys/php5.3

Replace php5.3 with which ever version you want to run
You can also add other file extensions to the list in the first line.

To run a part of your site as mod_php, add this line to a .htaccess in the directory you want to run as mod_php :


AddHandler application/x-httpd-php .php3 .phtml .php .php4 .php~ .php3~ .php4~ .phtml~ .inc .inc~