Reydel Leon
Reydel Leon

Reputation: 1075

404 Error in Magento extension when deployed in production

This one is puzzling me for 2 days now. I've found a solution for a 404 in admin, but it is not the same that is happening here. I have exactly the same version of Magento in my local copy and production server: 1.7.0.2. The extension works great in local. I packaged it using Magento Connect and installed in production the same way. All files are there. It shows in the menu and in Configuration section, but when I click the menu to go to the report, I get the beloved 404. I loged out and in, flushed cache zillion times (including deleting the files manually) but nothing changed.This are the URLs in both envs:

(Dev)http://localhost/magentos/index.php/salestaxes/adminhtml_salestaxes/index/key/c4b8ecb58fa2062f696cacfd340/

(Prod)https://www.myserver.com/index.php/salestaxes/adminhtml_salestaxes/index/key/332e617e74a92a39a40cf5d3/

As you can see is exactly the same. I don't know wahy then I'm getting the error. Can somebody point what can I do to solve this? DO I need to check any setting? What can cause this?

This is a var_dump that I get in the router _validateControllerClassName() method:

string(115) "/home_path/public_html/app/code/community/Surpassweb/SalesTaxes/controllers/Adminhtml/SalestaxesController.php" 
string(100) "/home_path/public_html/app/code/community/Surpassweb/SalesTaxes/controllers/IndexController.php"

This is the output of Alam's 404 module:

Controller Name

Controller Name: adminhtml_salestaxes
The controller name adminhtml_salestaxes matches the following controller file, but this file does not exist.
home_path/public_html/app/code/community/MyCompany/SalesTaxes/controllers/Adminhtml/SalestaxesController.php

The file is there and has 755 permissions.

This is the first line in may controller:

class MyCompany_SalesTaxes_Adminhtml_SalesTaxesController extends Mage_Adminhtml_Controller_Action {

Thanks for your time.

Upvotes: 1

Views: 1287

Answers (2)

Alana Storm
Alana Storm

Reputation: 166076

Are you absolutely sure the file is there? Named the same? With the same character capitalization? And that you're not in a production setup with multiple frontend webservers?

If you'll indulge me — copy the path of the controller from the Better 404 page to your computer's clipboard. Then type

$ ls -l [PASTE]

into your terminal window. My bet if the file won't be there. Also try

$ls -l app/code/community/Surpassweb/SalesTaxes/controllers/Adminhtml/

to see what files are there.

Looking at the information you provided, Magento is looking for a file named

app/code/community/MyCompany/SalesTaxes/controllers/Adminhtml/SalestaxesController.php

I don't know what your actual file is named, but looking at the class name

MyCompany_SalesTaxes_Adminhtml_SalesTaxesController

leads me to believe it might be incorrectly named SalesTaxesControlle.php. Notice the T in sales taxes is capitalized, vs the lowercase t Magento is looking for.

Upvotes: 1

txyoji
txyoji

Reputation: 6868

For some reason magento isn't registering the route to your app.

Either apache doesn't know to let magento handle it or magento doesn't know what to do with it.

Check your htaccess files and virtual host configs for the two environments.

Right off the bat I can see they're not exactly the same. One is http and one is https. Those are probably two different virtual host configs and could be slightly different.

Next I would make sure the config xml for your module is included in magento/app/etc/modules/ folder. Make sure the module is enabled. There should be a line for that in your modules config xml file.

If you deployed it to the local vs community folder, check the magento/app/etc/local.xml and make sure disable_local_modules is set to no.

Good luck. Troubleshooting in live is always fun.

Upvotes: 0

Related Questions