Solved

Setting up PHP to allow no .php file extension

Posted on 2011-09-25
9
320 Views
Last Modified: 2012-06-27
Experts

I am trying to create a local version of a clients site on my PC (windows 7) running IIS7.

The clients site is running on debian linux, with apache: www.dltphotography.co.uk

When on that site if you navigate to:
http://www.dltphotography.co.uk/recentEvents

It interprets it as recentEvents.php whereas on my machine it doesnt like it. I have access to all the files on the client site and have copied all the website files, thereforeand still get the problem. There is no .htaccess file on the live site that i can see. Therefore it must be to do with the overall setup.

I tries two different setups:
First running the site from IIS and conncting to PHP via CGI, this works fine for most things but no the above.
http://82.39.117.135:8003/index.php

I then tried running it on an apache install:
http://82.39.117.135:8081/index.php

Which gives the same problem. Im guessing its something to do with php.ini? or http.conf? i cant see what im supposed to do.

You can review the PHP info by adding demo.php on any of the urls including the client site.

ANy help would be greatly appreciated.

Easynow
0
Comment
Question by:Dean OBrien
9 Comments
 
LVL 82

Assisted Solution

by:Dave Baldwin
Dave Baldwin earned 100 total points
ID: 36596386
If they have their own server, the rewrite can be set up in the Apache 'httpd.conf' file instead of '.htaccess'.  They are running Apache 2.2.  The rewrite has to be done by Apache because PHP basically gets what Apache gives it.
0
 
LVL 6

Assisted Solution

by:Jelcin
Jelcin earned 100 total points
ID: 36596432
Hello,

I then tried running it on an apache install:
http://82.39.117.135:8081/index.php

Your link redirects me to your firewall / router...

If i try the iis some links are broken...


0
 
LVL 2

Accepted Solution

by:
maricksville earned 100 total points
ID: 36596558
Hi there.

One thing that you might consider is changing your server from IIS to Apache on your local machine...if this is an option for you. IIS and Apache do work differently and as the remote server is Apache then testing on Apache locally will mean that your testing environment is almost the same as the remote server.

I use EasyPHP which can be found at http://www.easyphp.org/. Its a very simple WAMP installation, and will install Apache, PHP and MySQL for you. You simply create folder and files inside the WWW folder.

The benefit here for using Apache is you can simply create your own htaccess file locally to redirect requests to include the PHP file extension.

When you say you cant see the .htaccess file on the server, what client are you using to access the server? From experience I have logged into a remote server via SmartFTP and there was no htaccess file visible when infact there was one present...it just wasnt visible.

Looking at the demo.php mod_rewrite is loaded.
0
 
LVL 108

Assisted Solution

by:Ray Paseur
Ray Paseur earned 100 total points
ID: 36598322
One possible solution would be to use a 404 handler, something like this one that I use on some of my sites.  HTH, ~Ray
<?php // 404handler.php
error_reporting(E_ALL);
session_start();

if (isset($_SERVER["REQUEST_URI"]))
{
    // SAVE THE REQUEST
    $_SESSION["REQUEST_URI"] = $_SERVER["REQUEST_URI"];

    // IF A PHP SCRIPT IS NOT FOUND GO TO THE HOME PAGE
    if (preg_match('#\.php#i', $_SERVER["REQUEST_URI"]))
    {
        header('Location: /');
        exit;
    }

    // IF A NON-PHP SCRIPT IS NOT FOUND, TRY IT WITH PHP
    $arr = explode('?', $_SERVER["REQUEST_URI"]);
    $arr[0] .= '.php';
    $uri = implode('?', $arr);
    header("Location: $uri");
    exit;
}

// IF NO REQUEST URI
header('Location: /');
exit;

Open in new window

0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 12

Author Comment

by:Dean OBrien
ID: 36598460
Thanks for all the input.

Ok i have concluded that the IIS version is a dead end due to the configuration differences.

The apache version i am running is one called "EnterpriseDB ApachePHP" which i got prompted to install when setting up Postgres Database (in order to allow pgPHPadmin to work). This has defaulted to port 8081 because IIS is on 80, which appears to conflict with my router port...

I am at work at the moment and intend to try sorting this when i get home.

Would you recommend I:

a) persevere with the Apache version above? (is there much difference between versions?)
b) uninstall above apache and install Apache 2.2?
c) install Debian on a virtual machine so as to guarantee same environment, then install Apache2.2 etc?

I dont want to go to the trouble of the virtual box if its not necessary. The other point is that the live site appears to use "PHP5 + squeeze". Is this squeeze something i should be concerned about? The other thing i notice on the php.info is that it tells it to scan another DIR for .ini files. I cant seem to see where this is defined.

Maricksville - im access using a shell client called WinSCP.

Sorry for long post...

Easynow
0
 
LVL 2

Expert Comment

by:maricksville
ID: 36599827
I think that you are going to continue to receive various conflict issues using IIS under Windows. Globally PHP is primarily associated with Apache and Linux, and as such having a similar server environment locally is not a bad idea.

Is the website using Postgresql or MySQL? Are you able to FTP to the server with a client such as FileZilla to check the existence of the htaccess file?

Not to rehash what I said earlier but installing a LAMP/WAMP package is very simple, however these are MySQL packages and I dont know if they support or include Postgresql if that is something you need. Once installed these replicate the server environment very well and will allow you to use htaccess locally.
0
 
LVL 12

Author Comment

by:Dean OBrien
ID: 36600053
Hey Marick,
I need to use postgres as that is whats currently installed (never used before...).
I have checked an there is definitely no .htaccess files. FTP isnt setup, but there is a shell comand to view hidden files and it doesnt reveal any.

Im currently in the process of installing Ubuntu server on a virtual machine, which i believe comes with a buncle of applications including apache/php etc.. hopefully this will prove more fruitful...

Regards
Easynow


0
 
LVL 42

Assisted Solution

by:David S.
David S. earned 100 total points
ID: 36600197
> When you say you cant see the .htaccess file on the server, what client are you
> using to access the server? From experience I have logged into a remote server
> via SmartFTP and there was no htaccess file visible when infact there was one
> present...it just wasnt visible.

The "." at the beginning of a filename on a Linux system indicates that the file is a hidden file. So to see an ".htaccess" file, you have to make sure that your FTP client is configured to show hidden files.
0
 
LVL 12

Author Comment

by:Dean OBrien
ID: 36917274
Sorry for delay, i installed linu / debian on a VM with apache / php and the problems were resolved instantly. Thanks again for input.

Easynow
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

If you've heard about htaccess and it sounds like it does what you want, but you're not sure how it works... well, you're in the right place. Read on. Some Basics #1. It's a file and its filename is .htaccess (yes, with a dot in the front). #…
In Solr 4.0 it is possible to atomically (or partially) update individual fields in a document. This article will show the operations possible for atomic updating as well as setting up your Solr instance to be able to perform the actions. One major …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now