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

5
  • 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. Commented Sep 3, 2013 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
    Commented Sep 3, 2013 at 20:00
  • When I hit that page, I get a working site. Commented Sep 3, 2013 at 20:01
  • the homepage works.. just not any sub page.
    – brunam
    Commented Sep 3, 2013 at 20:05
  • Yep, definitely htaccess related, looks like the answer below might clear things up. Commented Sep 3, 2013 at 20:09

3 Answers 3

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]
3
  • We posted this at the same time. Your answer is better and was exactly what I was referring to. Commented Sep 3, 2013 at 20:05
  • It should also be mentioned that NetworkSolutions usually has some funky issues if you do not include RewriteBase / in your rule Commented Sep 3, 2013 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
    Commented Sep 3, 2013 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.

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!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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