PHP code / version help

PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-12 12:16:00

I just transferred my website from GoDaddy to Dreamhost.

On GoDaddy, the PHP code worked fine, but now it does not. I'm guessing it's a version issue.


For example, this code used to return a TRUE on the goDadddy hosted site, but now it never returns TRUE ...

if ($HTTP_POST_VARS) {




...and variables in my forms are not populated as before...but I can get them from this code...

$login = $_POST['login']; //get the login form var


Here is another example...I have this code at the top of some pages to get any passed variables...

while (list($key,$value)=each($HTTP_GET_VARS))
${$key} = $value;

And I get a warning on the each():
Warning: Variable passed to each() is not an array or object


I'm wondering if I need to re-code all my pages, or is there a workaround for this issue?

When I do phpinfo() it says I'm using version 5.2.

Thanks in advance! I'm not a real PHP developer, just trying to get by.





Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-12 12:19:00


One other thing I noticed...when I pull up a page on my site like this...

www.URL.com/page

...it does not load...but if I fully qualify it...

www.URL.com/page.php

...it will load. I must be missing some basic settings somewhere.


Re: PHP code / version help

Posted by: Fireye
Posted on: 2009-02-12 12:46:00

www.url.com is "fully qualified", as far as domains go, "fully qualify" doesn't really apply to URIs. It sounds like you had some mod_rewrite options on your old server that isn't on the new one. Go see if you had a .htaccess in your webroot on the old server, and compare it to the new one.

Regarding your post variable issues... I remember having some trouble when I moved to dreamhost too, let me see what I can dig up.

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-12 12:53:00


It appears goDaddy totally wiped out everything I used to have there when I transferred the domain. Anyway, I did find a .htaccess file in a folder named stats. It only had this line in it...

Options +Indexes

I don't know anything about the .htaccess file. I did see in another post someone suggested it contain this line...

AddHandler php5-cgi .php .htm .html

Would that allow a user to put in the file name w/o the .php at the end. Also, where should this file reside?



Re: PHP code / version help

Posted by: Fireye
Posted on: 2009-02-12 13:18:00

I don't think that would accomplish what you want.

.htaccess should reside at the highest level of your website, so in dreamhost, it'd be /<domain name/.htaccess

Are you running your own code, or is this an application/script that you downloaded?

Either way, I think you'll probably need to write some mod_rewrite rules to get the url.com/page to work properly, maybe something like:

RewriteEngine on
RewriteBase /
RewriteRule ^(.(plus symbol))$ /$1.php [NC]

... but, if someone went to /Page, it would request /Page.php on the backend I think. So if the file was actually named PAGE.php, it'd return a 404, because the case was different.

Also, you should restrict the kinds of characters that you end up passing along, perhaps allowing numbers, alphanumerics, underscores, and dashes would be enough. if so, use:
RewriteRule ^([a-z0-9\-\_](plus symbol))$ /$1.php [NC]



Edit: Silly me, messed up the 's and the *'s and the .'s. Fixed now. For reference:
. = any single character
(plus) = The previous character 1 or more times
* = The previous character 0 or more times

We want the rule to only trigger when there's actually something after the url.com/, so we use (plus).

This forum doesn't like the plus symbol. Substitute (plus symbol) with the actual plus symbol.Edited by fireye on 02/12/09 01:28 PM (server time).

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-12 13:59:00


I am running my own code that I wrote from scratch. What's more is that I have another domain hosted by DreamHost that uses the same code in places...and that works fine.

The working site is using PHP Version 4.4.9 and the new site that is NOT working is using PHP Version 5.2.6. I think that's the issue. Do you know how I can get the older PHP version running on my site? --I know I'll have to eventually fix the code when the old version is no longer supported...but getting it working now is the important thing.

Re: PHP code / version help

Posted by: sXi
Posted on: 2009-02-12 14:57:00

In reply to:

Do you know how I can get the older PHP version running on my site?


You can compile your own Custom PHP4.


OR:


- Create a cgi-bin folder in your domain directory.

- Download a Default DreamHost PHP4.4.9

- Unzip and upload dh-php449.cgi into your cgi-bin directory.

- Create/add to the domain's .htaccess:

AddHandler php-cgi .php
Action php-cgi /cgi-bin/dh-php449.cgi


- chmod 644 /.htaccess
- chmod 711 /cgi-bin
- chmod 700 /cgi-bin/dh-php449.cgi




How To Install PHP.INI / ionCube on DreamHost

Re: PHP code / version help

Posted by: Atropos7
Posted on: 2009-02-12 16:07:00

In reply to:

RewriteEngine on
RewriteBase /
RewriteRule ^(.(plus symbol))$ /$1.php [NC]


... and exactly under what conditions do you stop rewriting? Or do you like infinite loops?





cool openvein.org -//-

Re: PHP code / version help

Posted by: scjessey
Posted on: 2009-02-12 16:09:00

$HTTP_POST_VARS and the like are deprecated. Please refer to this wiki article for more information.

-- si-blog --

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-12 19:59:00


sXi,

Thank you so much! That worked great...except that I had a folder named cgi already and figured out I had to use that one instead of creating a new one named cgi-bin.

Now my depricated code is working again. Thanks to everyone for helping too!

Now I have to start fixing the code for php 5.

Re: PHP code / version help

Posted by: Fireye
Posted on: 2009-02-13 06:40:00

I love infinite loops! Rather, I don't do mod_rewrite too often, didn't think about that. Something like this maybe?

RewriteRule ^.*\.php$ - [L,NC]

... before the other rewriterule statement?

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-02-21 06:05:00

I found the answer on dreamhost's wiki...

http://wiki.dreamhost.com/Htaccess_tricks#No_File_Extension

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /$1.php [L,QSA]

Works great! Thanks for everyone chiming in.

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-04-01 06:08:00

DreamHost just moved my account to a new server. And now one of my websites does not work. It is the one that sXi helped me set up PHP4 on.

If I comment out the 2 lines in .HTACCESS, like this...

#AddHandler php-cgi .php
#Action php-cgi /cgi/dh-php449.cgi

...the website works, but all the old PHP4 code does not work, like the $HTTP_GET_VARS.

If I un-comment those lines, I get an internal server error.

Please help!

Here is part of the message from Dreamhost regarding the move...



If a website isn't working, please make sure you don't have anything like
"/home/.SOMETHING/username" in any of your sites scripts. Instead, it should
just be "/home/username". If your site brings up an error with something
between /home/ and /username/, then the path in one of your site files is
incorrect and will need to be updated. If you don't know how to do this,
please contact us and we'll be happy to assist you with it.

If you run your own DNS outside of DreamHost (i.e. your domains nameservers
aren't pointing to us) we can't make all the necessary changes for you, so
you will need to make these changes yourself. You will have new DNS records
for your domain, mail and MySQL services and can find all of the new records
on the 'Manage Domains' section of your panel. Just click the 'DNS' link under
your new domain to see your new DNS records that you need to update. You can use
these new values to make the appropriate changes where you're managing your DNS.

Also, custom PHP (and php.ini) setups will likely be broken by the move. This is
because they would have been built against the old 32bit libraries on the old server
and not the 64bit libraries on this new server. Unfortunately, this isn't something we
can help you troubleshoot, but you'll just basically need to rebuild your custom php
(or php.ini) again.



Re: PHP code / version help

Posted by: sXi
Posted on: 2009-04-01 18:13:00

Use a Default DreamHost PHP4.4.9 64 bit version.




How To Install PHP.INI / ionCube on DreamHost

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-04-01 19:35:00

I downloaded the Default DreamHost PHP4.4.9 64 bit version as you directed, unzipped it, uploaded the cgi file, and modified the .htaccess file accordingly, but it didn't work...I'm still getting an internal server error.

I tried all kinds of things, checked permissions, etc, but nothing. Any ideas?

BTW -- the zip file you pointed me to, when I unzip it, the file inside is php.cgi, which seems like a new naming convention from the last one of dh-php449.cgi. Is the shorter name correct?

right now my htaccess file has these lines...

AddHandler php-cgi .php
Action php-cgi /cgi-big/php.cgi



Thanks for the help!

Re: PHP code / version help

Posted by: sXi
Posted on: 2009-04-01 20:03:00

Check for typos and the file permissions (chmod).

PM me the SFTP login info if you want me to take a quick look.




How To Install PHP.INI / ionCube on DreamHost

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-04-01 20:13:00

I think I'm going to give up on getting php4 to work. I started looking at my code, and I think I can change it to use php5 syntax.

My main issues are stuff like this...at the top of each file, when I'm posting to the same file or sending URL parms, I have this bit of code....


while (list($key,$value)=each($HTTP_GET_VARS)){
${$key} = $value;
}


...so suppose the url has a parm like this...

www.url.com/test.php?year=2009

...I used to be able to get the 2009 value from calling this variable...$year. Or if I posted to the same php page, I could get any post variables the same way.

I just have to change each variable to either $_POST['variablename'] or $_GET['variablename'].

My site isn't too big, so it's not that painful.

Thanks for the help. I do really appreciate it!


Re: PHP code / version help

Posted by: sXi
Posted on: 2009-04-01 20:54:00

Updating the code is always the best option wink




How To Install PHP.INI / ionCube on DreamHost

Re: PHP code / version help

Posted by: corduroy9
Posted on: 2009-04-02 13:15:00


For anyone with the same issue, I deleted my while loop (shown 2 posts above), and as a quick fix, added code like this (for each variable) to the top of the page...

$title=$_GET['title']==null?$_POST['title']:$_GET['title'];
$name=$_GET['name']==null?$_POST['name']:$_GET['name'];

So I get the URL parameter or the posted parameter, and still maintain the var names in the rest of the code. A bit tedious but it works.


Tags: godaddyworkaroundthanks in advancevariablesarray