2

My site works fine locally and works fine at a dev installation. When loading it onto a network solutions hosting account, I get "No input file specified." on every page but the home page. Both dev and staging are running php as a cgi script so not sure why the error there.

Feel free to take a peek at staging.imagenational.com

  • Sounds like an environment issue not necessarily relating to ExpressionEngine. I would check that you can run a plain old PHP page, if that fails check the htaccess file (remove it for testing), and finally troubleshoot the EE app if needed. – Nuno Albuquerque Sep 3 '13 at 19:58
  • Even went so far as to run the expressionengine environment test script they have. Everything checked out 100% on it. I've got a phpinfo script link here – brunam Sep 3 '13 at 20:00
  • When I hit that page, I get a working site. – Nuno Albuquerque Sep 3 '13 at 20:01
  • the homepage works.. just not any sub page. – brunam Sep 3 '13 at 20:05
  • Yep, definitely htaccess related, looks like the answer below might clear things up. – Nuno Albuquerque Sep 3 '13 at 20:09
10

Take a look at my comment on this post:

"no input file specified" - .htaccess

Might be the same issue: if so, you need to add a ? to the RewriteRule (to index.php) in your htaccess, for example:

From

 RewriteRule ^(.*)$ /index.php/$1 [L,QSA]

To

RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
| improve this answer | |
  • We posted this at the same time. Your answer is better and was exactly what I was referring to. – Justin Kimbrell Sep 3 '13 at 20:05
  • It should also be mentioned that NetworkSolutions usually has some funky issues if you do not include RewriteBase / in your rule – Justin Long Sep 3 '13 at 20:11
  • @JustinKimbrell great. This issue used to drive me nuts, because it seemed random--until I learned it was a FastCGI vs mod_php issue. Now, at least I always know there's a straightforward reason why it happens. – Jay F Sep 3 '13 at 20:12
4

I have ran into the same issue on MediaTemple and have fixed it by modifying the .htaccess file. For me, my old base .htaccess references index.php and was missing a '?' after it. First place I would check is .htaccess and go from there.

| improve this answer | |
0

For further clarity and thoroughness, I had to engineer another approach-based solution. As an added bonus, the shared hosting environment we had to use was forced to use FastCGI, and on top of that wouldn't allow us to modify any CGI or PHP configurations. Really unhelpful I know.

As has been made clear by other answers and discussions, the problem seems to be that when using a CGI-based implementation of PHP, the $_SERVER['PATH_INFO'] variable is not available, but it is unfortunately required by ExpressionEngine when trying to route requests, specifically when trying to navigate without the pesky index.php string being present in the URL.

So in the end, what worked for me was this 3 step 'custom' approach:

  1. First, in ExpressionEngine > CP Home > Admin > System Administration > Output And Debugging, I set Force URL query strings to No.
  2. Next, as mentioned in previous answers, I changed the .htaccess directive from RewriteRule ^(.*)$ /index.php/$1 [L,QSA] to RewriteRule ^(.*)$ /index.php?/$1 [L,QSA] (extra ? after index.php).
  3. Finally, I added this piece of custom PHP code to the top of site root's index.php file to "force" the $_SERVER['PATH_INFO'] variable into accurate existence:

    <?php
    
        $path = $_SERVER['REQUEST_URI'];
        $pos = strpos($path, '?');
        if ($pos !== false)
            $path = substr($path, 0, $pos);
        $_SERVER['PATH_INFO'] = $path;
    
        /**
         * ExpressionEngine - by EllisLab
           ...
           ...
    

I hope this helps someone! I really pulled my hair out trying to find somewhat more elegant solutions!

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.