Magento Stack Exchange is a question and answer site for users of the Magento e-Commerce platform. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

It's time for another patch day, SUPEE-7405 for Magento 1.x is out and the list of fixes is long: https://magento.com/security/patches/supee-7405

After the experience with the last patches I have to ask again: what are the possible problems when applying the patch and what do I need to consider?

Lots of XSS issues were fixed again, so I expect to patch custom themes manually. Anything else? Are there backwards incompatible changes?

share|improve this question
2  
GG cant beat another patch – Bobadevv Jan 20 at 22:21
6  
One problem that we ran into today when patching our version (EE 1.14.0.1. ...) SUPEE-7405 Caused our Admin Order Detail screen to be blank/broken. The Order queue is visible but clicking on any order returns a broken order detail page. We did not discover this until after we had rolled it into production. - Awaiting response from Magento Support. – Moonman67 Jan 21 at 0:15
6  
Also just discovered our SOAP API URL ( /index.php/api/v2_soap/index/?wsdl=1) is now throwing a 500 error. If you rely on SOAP like I do... Do NOT install the patch until this is resolved – Moonman67 Jan 21 at 1:36
4  
Files uploaded via admin panel (i.e. product image upload) are now not world readable by default (0640). Directories are also not world executable (0750). This can cause issues with images not appearing on the website if the webserver runs as a different user from php (i.e. php-fpm as user, webserver as nobody for static files). – Rob Mangiafico Jan 21 at 1:42
3  
- all previous patches need to be applied (and if you haven't applied, especially the Shoplift one, you can assume your store is already hacked - check for unknown admins, weird code etc) - the order page might be broken on PHP 5.3 - the code uses PHP 5.4 statement. – Piotr Kaminski Jan 21 at 16:33

17 Answers 17

up vote 111 down vote accepted

23rd February 2016 Update: The patch has been updated to V1.1, which fixes a number of important issues listed in this post, here is the list:

  • Cart Merge Patch (SUPEE-7978) : Carts with identical items now merge correctly. Previously, when a cart with one item was merged with another cart that contained the same item, Magento did not merge the cart totals correctly. The cart now includes only one item, and the total is correct.
  • SOAP API Patch (SUPEE-7822) : The Magento SOAP API now works as expected. Previously after installing the SUPEE-7405 v1.0 patch, an API request would cause a 500 error, and Magento would log an exception.
  • PHP 5.3 Compatibility (SUPEE-7882) : The patch was not compatible with PHP 5.3 for earlier versions of Magento that were still supporting this version. Merchants experiencing this issue were unable to view sales information in the Admin.
  • Upload File Permissions : The patch restores less restrictive file permissions (0666 for files and 0777 for directories) as more strict permissions introduced by the original SUPEE-7405 patch caused many merchants not to be able to view uploaded product images, depending on hosting provider configuration.

After digging into the patch, here are the relevant / interesting things I've found (N.B.: this list has been made by analyzing the patch for CE 1.9.2.0-1.9.2.2, there's probably more for patches affecting older versions of Magento) :

  • (fixed in V1.1 of the patch) The use of [] instead of array() in this patch makes it backward incompatible with PHP < 5.4 (see known issues below)
  • As stated, most of the changes are html escaping and data sanitizing regarding XSS issues.
  • Form key validation has been added to the admin login in Mage_Admin_Model_Observer
  • Form key validation has been added to the admin forgot password in Mage_Adminhtml_IndexController
  • Form key validation has been added to the admin reset password in Mage_Adminhtml_IndexController
  • Form key validation has been added to the frontend cart delete action. Form key is added to the getDeleteUrl of Mage_Checkout_Block_Cart_Item_Renderer and validated in the deleteAction of Mage_Checkout_CartController.
  • Events are now dispatched all lower case (every config files affected have been modified e.g. controller_action_postdispatch_checkout_onepage_saveOrder becomes controller_action_postdispatch_checkout_onepage_saveorder). This does not affect your local observers configuration. More information here: https://twitter.com/foomanNZ/status/689924329065164800
  • A new validator to check if an uploaded file is an image has been added: Mage_Core_Model_File_Validator_Image
  • A new Import/Export section appears : System => Configuration =>Advanced > System => Escape CSV Fields
  • New event dispatched: admin_user_validate under Mage_Admin_Model_User
  • SVG is not a valid favicon extension anymore
  • For those using Authorizenet (I don't) it seems like a few changes have been made, not sure how it impacts the system though. Changes include a new admin helper (Mage_Authorizenet_Helper_Admin) used to get the success order url.
  • New Zend class: Zend_Xml_Security. Its purpose is to scan XML string for potential XXE and XEE attacks. However I did not find any reference to it in the other modified files.
  • Files uploaded via admin panel (i.e. product image upload) are now not world readable by default (before: 777 / after: 640).
  • Directories are also not world executable (before 755 / after: 750). This two can cause issues with images not appearing on the website if the webserver runs as a different user from php (credits: @Rob Mangiafico)
  • Regarding frontend templates: the only modifications made are data escaping, which are not system breakers but still recommended to implement on your custom theme (and there's only two frontend files affected not that much work ;) )

Known issues after patching:

I'll try to keep this list as up to date as possible.

Before starting a new issue/question, please ensure you've applied all the previous patches as it seems like a lot of issues comes from missing patches.

Another thing is: if you have modified core files, applying the patch may fail. If you're having a Hunk # failed at error for a specific file and you're 100% sure you've applied all the previous patches, please ensure you have the original file from your Magento version by checking the mirror: https://github.com/OpenMage/magento-mirror/

List of affected files

It can be found on this page here: http://magento.stackexchange.com/a/98232/2380 (credits @MagenX)

EE Only

  • If you updated from Magento EE 1.14.2.x to Magento EE 1.14.2.3 instead of applying the patch, and also applied the support patch SUPEE-5984 before, you have to reapply it again because it is not included in the release. => http://magento.stackexchange.com/a/98805/2380

Regarding Patch 7616:

Good resources about Magento patches

Feel free to let me know if I miss something.

share|improve this answer
1  
You've mentioned my problem "Possible problem when applying 7616 before applying 7405: SUPEE 7405 - Hunk #2 Failed at 43" as an EE problem, when I'm actually using CE. – Liam McArthur Jan 21 at 10:03
1  
You're right, my bad, I've fixed it. – Raphael at Digital Pianism Jan 21 at 10:11
1  
Events are now dispatched all lower case : Does this mean we have to check/change local observers configuration ? – hellimac Jan 21 at 10:15
1  
@hellimac I'm about to test this in the following couple of hours, I'll update the post if it does affect local observers config. – Raphael at Digital Pianism Jan 21 at 10:19
4  
@hellimac No, the values from config.xml are also converted to lower case when read: twitter.com/foomanNZ/status/689924329065164800 – fschmengler Jan 21 at 10:20

One issue I have noticed is that if your site is using a version less than PHP 5.4 the patch is not compatible.

In the class Mage_Adminhtml_Helper_Sales around line number 124. The code is:

$links = [];

I needed to extend this to be:

        // Patch not compatible with PHP version 5.3: overwrote Magento patch update

        $links = array();

Another error I ran into seemed to involve the cookies I had set. Once I cleared my cookies though, all pages have been loading fine.

Example Error:

Notice: unserialize() [function.unserialize]: Error at offset 0 of 13 bytes  in `/var/www/website/app/code/core/Mage/Core/Helper/Cookie.php` on line 83

I'm not sure if anyone else has run into these issues, but hope it helps!

share|improve this answer
1  
I've seen the same thing in code we've patched. The patch simultaneously fixes bugs that are specific to PHP 5.3 and breaks compatibility with PHP 5.3. – Jim OHalloran Jan 21 at 0:45
    
Not really an answer, just more information: Applying the 7405 patch to a Magento 1.5.1 site (yes I know...) was arduous and, once "successful" caused front-end errors and the admin was completely unavailable. The site sits on php v5.3.1 - luckily I could restore back to it. I have another v1.9 installation on php 5.3.3 which I am testing...feeling hesitant to clear the cache now – Jon Holland Jan 21 at 16:20
    
Can confirm, Mag 1.9.0.1 on php 5.3.3 trying to view an order record in admin is white content area only. The change suggest fixes the issue. Good spot. – Jon Holland Jan 21 at 16:43

Here's a problem I've found when patching Magento CE with SUPEE-7405. It replaces the line:

chmod($destinationFile, 0777);

with:

chmod($destinationFile, 0640);

in the file lib/Varien/File/Uploader.php

This stopped my images displaying in the back end, since this file permission should actually be 644. Is there any reason this has been set to 640?

share|improve this answer
1  
I have same issue in Magento ver. 1.7.0.2 image can uploaded successfully but not showing in backend due to of permission issue. If I change the permission 0640 to 0644 then image can visible, which is not the exact solution. So I guess magento people needs to rectify this or give any other solution for this. – Jyotiranjan Jan 28 at 6:28
    
I assume apache/nginx should be configured to be in the same group that php-fpm creates the image, does anybody know security implications of such? – input Jan 28 at 17:09
    
It's suPHP that's causing me the problem I think! I've disabled it and enabled php-cgi instead which has increased page speed but I still have the permission issue. I'm not sure about the security implications so I'm leaving it be. I don't want to open any security holes! I'd rather edit the core file! – Liam McArthur Jan 28 at 20:14
3  
basically the issue is apache is not running as the same user as php. Changing the permission to 640 means the files are no longer world readable. You'll need to make sure that apache is running as the same user as php. This might be hard if your running cpanel a nice approach would be setting the group as nobody and making this sticky e.g: chown USERNAME:nobody -R public_html find ./public_html -type d -exec chmod g+s {} \; – rob3000 Jan 29 at 2:42
    
Any solution to this? – Arvind07 Jan 30 at 6:15

these files patched, you can see any possible impact:
template: admin templates mostly patched.

+++ app/design/frontend/base/default/template/rss/order/details.phtml
+++ app/design/frontend/base/default/template/catalog/product/view/options/type/file.phtml
+++ app/design/adminhtml/default/default/template/sales/order/view/info.phtml
+++ app/design/adminhtml/default/default/template/sales/order/totals/discount.phtml
+++ app/design/adminhtml/default/default/template/sales/items/renderer/default.phtml
+++ app/design/adminhtml/default/default/template/sales/items/column/name.phtml
+++ app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/name.phtml
+++ app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/invoice/name.phtml
+++ app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/creditmemo/name.phtml
+++ app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/file.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/shipment/view/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/shipment/create/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/order/view/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/invoice/view/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/invoice/create/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/creditmemo/view/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/bundle/sales/creditmemo/create/items/renderer.phtml
+++ app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml

core/libs:

+++ lib/Varien/Io/File.php
+++ lib/Varien/File/Uploader.php
+++ app/code/core/Zend/Xml/Security.php
+++ app/code/core/Mage/Sales/Model/Quote/Item.php
+++ app/code/core/Mage/Sales/Model/Quote/Address.php
+++ app/code/core/Mage/Sales/Helper/Guest.php
+++ app/code/core/Mage/Rss/Helper/Order.php
+++ app/code/core/Mage/Rss/Block/Catalog/Salesrule.php
+++ app/code/core/Mage/Review/controllers/ProductController.php
+++ app/code/core/Mage/Paypal/controllers/PayflowadvancedController.php
+++ app/code/core/Mage/Paypal/controllers/PayflowController.php
+++ app/code/core/Mage/Newsletter/Model/Queue.php
+++ app/code/core/Mage/Newsletter/Model/Observer.php
+++ app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php
+++ app/code/core/Mage/ImportExport/Model/Export/Adapter/Csv.php
+++ app/code/core/Mage/ImportExport/Model/Export/Adapter/Abstract.php
+++ app/code/core/Mage/Downloadable/controllers/CustomerController.php
+++ app/code/core/Mage/Dataflow/Model/Convert/Parser/Csv.php
+++ app/code/core/Mage/Customer/controllers/AccountController.php
+++ app/code/core/Mage/Core/Model/Session.php
+++ app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/Email/Template/Filter.php
+++ app/code/core/Mage/Core/Model/Email/Queue.php
+++ app/code/core/Mage/Core/Model/Config.php
+++ app/code/core/Mage/Core/Model/App.php
+++ app/code/core/Mage/Core/Helper/Data.php
+++ app/code/core/Mage/Checkout/controllers/OnepageController.php
+++ app/code/core/Mage/Checkout/controllers/CartController.php
+++ app/code/core/Mage/Checkout/Block/Cart/Item/Renderer.php
+++ app/code/core/Mage/CatalogInventory/Helper/Minsaleqty.php
+++ app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php
+++ app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php
+++ app/code/core/Mage/Catalog/Block/Product/View/Options/Type/Select.php
+++ app/code/core/Mage/Authorizenet/controllers/Adminhtml/Authorizenet/Directpost/PaymentController.php
+++ app/code/core/Mage/Authorizenet/Helper/Data.php
+++ app/code/core/Mage/Authorizenet/Helper/Admin.php
+++ app/code/core/Mage/Adminhtml/controllers/IndexController.php
+++ app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Image/Favicon.php
+++ app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Image.php
+++ app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php
+++ app/code/core/Mage/Adminhtml/Helper/Sales.php
+++ app/code/core/Mage/Adminhtml/Helper/Catalog/Product/Edit/Action/Attribute.php
+++ app/code/core/Mage/Adminhtml/Block/Widget/Grid.php
+++ app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Tab/History.php
+++ app/code/core/Mage/Admin/Model/User.php
+++ app/code/core/Mage/Admin/Model/Resource/User.php
+++ app/code/core/Mage/Admin/Model/Redirectpolicy.php
+++ app/code/core/Mage/Admin/Model/Observer.php

========================================================================= p.s. just to keep all together, we have created some "no-brainer" multipatch to patch many servers with multiple magento installations. multipatch-7405.sh

share|improve this answer
    
Nice! Cant remember overwriting those theme files so patch .sh can just do its thing :D – Bobadevv Jan 20 at 22:19
1  
Nicely done. The multipatch is a great idea; I just wish Magento released SHA1 hashes for their patches so that we could verify that they match external sources – philwinkle Jan 21 at 6:00
    
this can be simplified by accessing magento web repository directly to curl all patches, but we had some issues with it. and it required to enter your login details... magento wtf... – MagenX Jan 21 at 8:07
    
Great idea thanks ! – Matthéo Geoffray Jan 21 at 9:18

When applying for Magento 1.7.0.0 its trying to remove a comment on app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml

-/* @var $_helper Mage_Authorizenet_Helper_Data */

1.7.0.0 - https://raw.githubusercontent.com/OpenMage/magento-mirror/1.7.0.0/app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml

that was not added until 1.7.0.1 https://raw.githubusercontent.com/OpenMage/magento-mirror/1.7.0.1/app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml

share|improve this answer
    
I just added that line in 1.7.0.0 iframe.phtml and ran the patch again and was successful – Danny Z Jan 21 at 17:35
1  
@DannyZ same thing here just thought i'd better make note of it somewhere :) – rob3000 Jan 22 at 0:12

Here is my basic test plan:

  • Apply coupon
  • Login to admin
  • Force admin to change password
  • Export a CSV
  • Import a CSV
  • Reset password as admin and customer
  • Create an order in admin
  • Create and order in the front-end as guest
  • Create and order in the front-end as customer
  • Add an image to a product
  • Create a credit memo
  • Create an invoice
share|improve this answer
    
how exactly this list will help me to understand errors caused by this patch or it's just a developer has curved hands??? – MagenX Jan 21 at 17:30
    
@MagenX I don't know what a developer has curved hands means. But when I diffed the patch I made a list of things that could be problematic. – Brideo Jan 21 at 17:37
    
@MagenX so after applying the patch I'd check those areas, sorry if it wasn't helpful. – Brideo Jan 21 at 17:38
    
Ah, basic test suite for after patch checks to make sure you find the ouch before your customers and workers do... Makes perfect sense as it exercises areas affected by patched files. – Fiasco Labs Jan 22 at 6:41
    
This would be a nice (better?) answer to this question here: magento.stackexchange.com/questions/98565/… – Anna Völkl Jan 22 at 19:38

If you updated from Magento EE 1.14.2.x to Magento EE 1.14.2.3 instead of applying the patch, and also applied the support patch SUPEE-5984 before, you have to reapply it again because it is not included in the release.

This was the patch that fixed the broken indexer: Index error after upgrade to EE 1.14.2.0: table catalog_product_entity_tmp_indexer doesn't exist

share|improve this answer

As of Feb 23 2016, Magento have released a patch for the patch to address many of these problems: https://magento.com/security/patches/supee-7405

You need to apply SUPEE_7405_v1 then SUPEE_7405_v1.1 in order.

share|improve this answer

Please be aware of dropped sessions issue recently discovered and fixed (?) by Colin Mollenhour.

https://gist.github.com/colinmollenhour/5066a3220881a9c0c2dd42fa1593cbff/revisions

share|improve this answer

here affected files for Magento EE

> -e 2016-02-11 03:14:54 UTC | SUPEE-7405-EE-1-14-2-2 | EE_1.14.2.2 | v1 | 91465c744a824111902e2911fd63fd8cb6c32f05 | Tue Jan 19 14:27:03 2016 +0200 | e1fc3c59c9..91465c744a
patching file app/code/core/Enterprise/Checkout/Block/Adminhtml/Manage/Form/Coupon.php
patching file app/code/core/Enterprise/GoogleAnalyticsUniversal/Block/Ga.php
patching file app/code/core/Enterprise/PageCache/etc/config.xml
patching file app/code/core/Enterprise/Pbridge/etc/config.xml
patching file app/code/core/Enterprise/Pci/Model/Observer.php
patching file app/code/core/Enterprise/Pci/Model/Resource/Admin/User.php
patching file app/code/core/Enterprise/Pci/etc/config.xml
patching file app/code/core/Enterprise/Persistent/etc/config.xml
patching file app/code/core/Enterprise/SalesArchive/etc/config.xml
patching file app/code/core/Enterprise/WebsiteRestriction/etc/config.xml
patching file app/code/core/Mage/Admin/Model/Observer.php
patching file app/code/core/Mage/Admin/Model/Redirectpolicy.php
patching file app/code/core/Mage/Admin/Model/Resource/User.php
patching file app/code/core/Mage/Admin/Model/User.php
patching file app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Tab/History.php
patching file app/code/core/Mage/Adminhtml/Block/Widget/Grid.php
patching file app/code/core/Mage/Adminhtml/Helper/Catalog/Product/Edit/Action/Attribute.php
patching file app/code/core/Mage/Adminhtml/Helper/Sales.php
patching file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php
patching file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Image.php
patching file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Image/Favicon.php
patching file app/code/core/Mage/Adminhtml/controllers/IndexController.php
patching file app/code/core/Mage/Authorizenet/Helper/Admin.php
patching file app/code/core/Mage/Authorizenet/Helper/Data.php
patching file app/code/core/Mage/Authorizenet/controllers/Adminhtml/Authorizenet/Directpost/PaymentController.php
patching file app/code/core/Mage/Captcha/etc/config.xml
patching file app/code/core/Mage/Catalog/Block/Product/View/Options/Type/Select.php
patching file app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php
patching file app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php
patching file app/code/core/Mage/CatalogIndex/etc/config.xml
patching file app/code/core/Mage/CatalogInventory/Helper/Minsaleqty.php
patching file app/code/core/Mage/Checkout/Block/Cart/Item/Renderer.php
patching file app/code/core/Mage/Checkout/controllers/CartController.php
patching file app/code/core/Mage/Checkout/controllers/OnepageController.php
patching file app/code/core/Mage/Core/Helper/Data.php
patching file app/code/core/Mage/Core/Model/App.php
patching file app/code/core/Mage/Core/Model/Config.php
patching file app/code/core/Mage/Core/Model/Email/Queue.php
patching file app/code/core/Mage/Core/Model/Email/Template/Filter.php
patching file app/code/core/Mage/Core/Model/File/Validator/Image.php
patching file app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php
patching file app/code/core/Mage/Core/Model/Session.php
patching file app/code/core/Mage/Customer/controllers/AccountController.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Parser/Csv.php
patching file app/code/core/Mage/Downloadable/controllers/CustomerController.php
patching file app/code/core/Mage/ImportExport/Model/Export/Adapter/Abstract.php
patching file app/code/core/Mage/ImportExport/Model/Export/Adapter/Csv.php
patching file app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php
patching file app/code/core/Mage/ImportExport/etc/config.xml
patching file app/code/core/Mage/ImportExport/etc/system.xml
patching file app/code/core/Mage/Newsletter/Model/Observer.php
patching file app/code/core/Mage/Newsletter/Model/Queue.php
patching file app/code/core/Mage/Page/etc/system.xml
patching file app/code/core/Mage/Paypal/controllers/PayflowController.php
patching file app/code/core/Mage/Paypal/controllers/PayflowadvancedController.php
patching file app/code/core/Mage/Paypal/etc/config.xml
patching file app/code/core/Mage/Persistent/etc/config.xml
patching file app/code/core/Mage/Review/controllers/ProductController.php
patching file app/code/core/Mage/Rss/Block/Catalog/Salesrule.php
patching file app/code/core/Mage/Rss/Helper/Order.php
patching file app/code/core/Mage/Sales/Helper/Guest.php
patching file app/code/core/Mage/Sales/Model/Quote/Address.php
patching file app/code/core/Mage/Sales/Model/Quote/Item.php
patching file app/code/core/Zend/Xml/Security.php
patching file app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/creditmemo/create/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/creditmemo/view/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/invoice/create/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/invoice/view/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/order/view/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/shipment/create/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/bundle/sales/shipment/view/items/renderer.phtml
patching file app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/file.phtml
patching file app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/creditmemo/name.phtml
patching file app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/invoice/name.phtml
patching file app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/name.phtml
patching file app/design/adminhtml/default/default/template/enterprise/checkout/form/coupon.phtml
patching file app/design/adminhtml/default/default/template/sales/items/column/name.phtml
patching file app/design/adminhtml/default/default/template/sales/items/renderer/default.phtml
patching file app/design/adminhtml/default/default/template/sales/order/totals/discount.phtml
patching file app/design/adminhtml/default/default/template/sales/order/view/info.phtml
patching file app/design/frontend/base/default/template/catalog/product/view/options/type/file.phtml
patching file app/design/frontend/base/default/template/rss/order/details.phtml
patching file lib/Varien/File/Uploader.php
patching file lib/Varien/Io/File.php
share|improve this answer

Whenever we install a patch for one of our clients we use the following checklist:

  • Make a complete backup of the site files & database.
  • Make sure all previous patches have been installed successfully (can be seen in app/etc/applied.patches.list file)
  • After successful installation of the patch, clear the cache and make a test order to ensure everything works.

I guess that's really all there is to it. The patches are designed to be installed quickly and without any hassle. 9 out of 10 times they will install perfectly fine and for the other times we have backups. As long as you are not messing with core files everything should be okay.

share|improve this answer
    
file probably app/etc/applied.patches.list – MagenX Jan 20 at 21:43
    
Thank you, edited my original reply. – Gary Olderman Jan 20 at 22:27
2  
I don't feel like this answers the question. The OP is referring to SUPEE-6788 which required tonnes of manual work in third party extensions, not how to apply a patch. – Robbie Averill Jan 20 at 23:16
    
OP is referring to SUPEE-6788 Robbie, not 6788. – Gary Olderman Jan 21 at 19:06
    
Sorry, to clarify the question is obviously about 7405 but is asked in light of the nightmare that was 6788- it's context – Robbie Averill Jan 22 at 5:29

After applying the SUPEE-7405 on Magento 1.14.1.0 I got the error:

Fatal error: Cannot redeclare Mage_Core_Controller_Varien_Router_Admin::_validateControllerInstance() in app/code/core/Mage/Core/Controller/Varien/Router/Admin.php on line 173

The problem was caused by re-declared method _validateControllerInstance in

app/code/core/Mage/Core/Controller/Varien/Router/Admin.php on line 173

After removing second (same) function declaration, the issue has been solved.

share|improve this answer

Screenshot for admin order details page, If showing this type issue, Please follow below instruction its working for me !!enter image description here

Solution

Change line 124 in app/code/core/Mage/Adminhtml/Helper/Sales.php from $links = []; to $links = array();

share|improve this answer

If you updated from Magento Enterprice Edition 1.14.2.x to Magento EE 1.14.2.3** instead of applying the patch, and also applied the support patch SUPEE-5984 before, you have to reapply it again because it is not included in the release.

This was the patch that fixed the broken indexer: Index error after upgrade to EE 1.14.2.0: table catalog_product_entity_tmp_indexer doesn't exist

share|improve this answer

I got following error after installing the SUPEE-7405 patch when try to login to admin.

Fatal error: Call to undefined method Mage_Core_Controller_Response_Http::sendHeadersAndExit() in
\app\code\core\Mage\Admin\Model\Session.php on line 135

because I had this file overridden in local code pool which does not have sendHeadersAndExit method created by this patch.

\app\code\local\Mage\Core\Controller\Response\Http.php following method does not exist. ( This is a new method added to the core file)

  /**
     * Method send already collected headers and exit from script
     */
    public function sendHeadersAndExit()
    {
        $this->sendHeaders();
        exit;
    }

After adding this to the overridden file issue gone away.

share|improve this answer

One of the issues I got when using SUPEE-7405 is Image Upload Bugs

Therefore, I check the changes in this file: lib/Varien/File/Uploader.php

diff --git lib/Varien/File/Uploader.php lib/Varien/File/Uploader.php
---
---
-        chmod($destinationFile, 0777);
+        chmod($destinationFile, 0640);
---
---
-        if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0777, true))){
+        if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0750, true))){

Then, I found out two ways to overcome it:

Option 1:

I perform a manual change on the file the file lib/Varien/File/Uploader.php to adjust the 0640/0750 permissions.

Option 2: Because Magento expects the webserver to own the site files:

http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html#privs-after

The other way to resolve the problem is making the webserver the owner of the files

chown -R web-server-user-name magento/root/path

The webserver user name is commonly www-data or apache.

share|improve this answer

You need to apply SUPEE_7405_v1 then SUPEE_7405_v1.1 in order.

share|improve this answer
    
Your answer is a copy-paste of the answer by @xyphoid. Directly above you. – Luke Rodgers Mar 16 at 9:18

protected by Community Jan 21 at 10:17

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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