Thursday, April 28, 2016

Varien_Simplexml_Element type hinting

public function setXml ( Varien_Simplexml_Element $node ) { }

Magento. How to display error messages

To make the error readable and easier to understand, please do the following:
magento-error-display-1
  1. Open your Magento installation directory. Go to the errors folder.
  2. Rename local.xml.sample file to local.xml.
  3. Refresh the error page in browser.
    magento-error-display-2
  4. Now you can use the error text and search our Help Center or Google for a solution.
However, sometimes renaming the local.xml.sample file is not working. There is another solution which we can use to display errors in Magento:
  1. Open your Magento installation directory. Locate and open index.php file.
  2. Search for error_reporting(E_ALL | E_STRICT); code.
  3. Comment it out like that:
    ?
    1
    /*error_reporting(E_ALL | E_STRICT);*/
  4. And use the following code instead:
    ?
    1
    2
    error_reporting(E_ALL);
    $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
  5. Also, locate the following code:
    ?
    1
    #ini_set('display_errors', 1);
  6. Uncomment it by removing the # sign, so it looks like that:
    ?
    1
    ini_set('display_errors', 1);
  7. Save this file and upload to the server. Reload your website page to see errors.
Now you know how to display error messages in Magento.

There has been an error processing your request, Error log record number

Go to magento/var/report and open the file with the Error log record number name i.e 673618173351 in your case. In that file you can find the complete description of the error.
For log files like system.log and exception.log, go to magento/var/log/.

link : http://stackoverflow.com/questions/15473705/there-has-been-an-error-processing-your-request-error-log-record-number

Wednesday, April 20, 2016

Duck-typing and monkey-patching

These are two different concepts / programming approaches.

Duck typing - A programming concept that is primarily concerned with the methods that can be run on an object rather than the Class of the object. Ruby allows you to pass an object to a method in another Class so long as that object can take that method. "if it quacks like a duck, then it's a duck".
(good example here: Duck Typing: Ruby Study Notes)

Monkey patching - Unlike many other languages, Ruby allows you to reopen classes, including system classes or third party library classes linked to by your program, and add new methods to them or overwrite existing methods, at run time.
For example, your code could reopen the String.to_i method and have it do something different in your particular program by simply doing:

  1. class String
  2. def to_i
  3. my custom to_i method code
  4. end
  5. end

   With great power comes the danger of misuse or abuse, and monkey patching is no exception. It can be easy to introduce bugs or can make debugging very difficult if you forget the expected behaviour is changed, especially later when someone else is maintaining the code. It's more useful for adding useful methods to a class.
   Monkey patching allows you to come up with a "quick and dirty" solution to a problem, but you should use it very sparingly. For example, if you're extending a third party library (gem), you could fork the gem instead. (see The End of Monkeypatching)


10 Signs That You Are An Awesome Web Developer

So you know how to make a website or two. But are you worthy enough to be called an awesome web developer? Here are 10 positive signs that you are.

1. You use a framework

Even if you are a rockstar programmer, a web development framework makes a lot of sense. It gives you a collection of good practices and libraries that let you concentrate on your web app, instead of reinventing the wheel. As a bonus, you get things like templating, pretty URLs, session management, ORM, testing facilities and more for free. A framework leads to easier to manage code and minimizes the chances for security issues to arise, so you probably should use one. See a huge list of frameworks here.

2. You use version control

Version control systems allow you to keep track of every change that you’ve made to your code, to compare, branch and work collaboratively without stepping on your team members’ toes. Git is the most popular system with web developers today and it is easy to get started with – you can turn your project folder into a repository with a single init command. Experienced web developers make full use of git’s advanced abilities, but so can you – every IDE offers integration with it these days, so even if you don’t know the commands there is a lot that you can do with git.

3. You reuse code

Reinventing the wheel and the NIH syndrome are big issues for programmers. You might have spent a day coding, feeling incredibly productive, only to discover that a 30 second Google search would have revealed a library that does exactly what you need. A positive trait of awesome developers is that they use their language’s package managers to search for libraries that they can use before solving the problems themselves. Every language has an online repository that makes things easy to find – PHP’s Packagist, Node’s NPM, Ruby’s Gems and more. The same issues apply to reusing one’s own code. Extracting common functionality as libraries can save you time in the long run.

4. You write tests

You should never trust that your code is bug free only because everything works when you refresh the browser tab. Things can break in subtle and unforeseen ways. Awesome web developers know that automated testing is the only way to be certain that their apps work and continue to work after every code change. Testing takes many complimentary forms. Your framework likely has built-in facilities for constructing and running tests. There are also tools like seleinumwhich you can use to simulate how a user would interact with your site.

5. You take security seriously

CSRFSQL injection attacksXSSsession fixation, MITM attacks are only some of the hot topics that a security minded developer should be aware of. Luckily, your framework’s authors have to worry about these issues, but it is important that you know what the threats are and how to mitigate them. Here is a video tutorial series to get you started.

6. You document your code

Experienced developers know that code is written once, but read many times. This is why they try to make their code as easy as possible to understand by naming their variables and functions descriptively, and by leaving plenty of comments. Every language has conventions for writing doc blocks – descriptions that appear before every class or method. They describe the parameters expected by the method, and can be picked up by an IDE and shown contextually, or by a program that turns these comments into HTML documentation.
Other developers even take the time and write down the architecture of their apps and the technical decisions behind it in a wiki or another document. Such documentation is very valuable in a team setting, where new developers can join at any time. Even if you don’t go all the way and write documentation, making it a habit to leave comments in your code will still win you the awesome badge.

7. You can set up a web server from scratch

Basic administration skills can go a long way if you are a web developer. After all, every site that you create needs to be run on a properly configured web server. Knowing how things work will help you debug problems, set up your development environment, and to save on hosting bills by running your own server. Another place where such skills can be handy is in setting up a deployment strategy. Uploading stuff via ftp is prone to error as well as insecure. Here is a nice collection of guides to get you started with system administration.

8. You keep track of new libraries and tools

Web development is an extremely dynamic part of the software industry. Every year there are major new libraries, automation tools, build systems, css frameworks and preprocessors, and even languages that compile down to JavaScript. Awesome web developers are able to keep up with what is new, and are open to change. But they don’t adopt every new tool or framework they come across. They know that their time is valuable and treat everything they learn as an investment. A library should have an active and enthusiastic community, good documentation and clear benefits over the old way of doing things before they consider it seriously. Our twitter feed is a great place to learn about what’s new in web dev.

9. You manage your time efficiently

Everybody knows what it is like to waste hours in front of your computer, doing everything except working on the things you are supposed to. Awesome web developers don’t have this problem. They are able to plan a week in advance, break down large tasks into smaller ones, and start working first thing in the morning. They start with the easy things and move on to harder problems while picking up speed. They know where they work best – some are more productive from home, others from the office, and third from coffee shops or other public places. Here are some time management tips.

10. You know how to stay healthy

Although it is in the lifestyle category, staying healthy has everything to do with your productivity as a programmer. We spend most of our days sitting and staring at computer screens half a meter away. This can lead to everything from chronic back and neck pain, eye problems, weight gain and more. It is not difficult to prevent these problems – taking breaks, going for a midday walk, doing the 7 minute workout in the evenings and getting plenty of sleep can have a good energizing effect on your mind.
That’s 10! What’s your sign for an awesome developer?
courtesy: http://tutorialzine.com/

Tuesday, April 19, 2016

Importing sql file in mysql WAMP

1. left click wamp -> phpmyadmin
2. select database then click import (top right)
3. locate the database and click go.
and using command line try this..
The easiest way for me to import an sql file into a database in WAMP environment using command line is using following:
1. Run the cmd (DOS) and get into the mysql folder, which in my case works like this
C:\>cd C:\wamp\bin\mysql\mysql5.0.51b\bin
2. Then use this command to fire up MySQL

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql.exe -use databasename -u username -p
password_optional_if_you_have_one This line basically connects you to the mysql database of your choice. 3. To make things easier, I copy my SQL file into the same folder where the mysql.exe file is located. And then run this mysql> source myfilename.sql;

Monday, April 18, 2016

netz98 magerun CLI tools

The n98 magerun cli tools provides some handy tools to work with Magento from command line.

Build Status

Latest Releasehttps://travis-ci.org/netz98/n98-magerun.png?branch=master https://www.versioneye.com/user/projects/51236c8b294edc00020064c5/badge.png https://scrutinizer-ci.com/g/netz98/n98-magerun/badges/quality-score.png?b=master https://poser.pugx.org/n98/magerun/v/stable.png
Development Branchhttps://travis-ci.org/netz98/n98-magerun.png?branch=develop https://circleci.com/gh/netz98/n98-magerun/tree/develop.svg?style=shield https://scrutinizer-ci.com/g/netz98/n98-magerun/badges/quality-score.png?b=develop https://codecov.io/github/netz98/n98-magerun/coverage.svg?branch=develop

Compatibility

The tools will automatically be tested for multiple PHP versions (5.3, 5.4, 5.5). It's currently running in various Linux distributions and Mac OS X. Microsoft Windows is not fully supported (some Commands like db:dump or install are excluded).
The tool partially works with Magento 2 development branch.

Installation

There are two ways to install the tools:

Download and Install Phar File

Download the latest stable N98-Magerun phar-file from the file-server:
wget https://files.magerun.net/n98-magerun.phar
Verify the download by comparing the MD5 checksum with the one on the website:
md5sum n98-magerun.phar
If it shows the same checksum as on the website, you downloaded the file successfully.
Now you can make the phar-file executable:
chmod +x ./n98-magerun.phar
The base-installation is now complete and you can verify it:
./n98-magerun.phar --version
The command should execute successfully and show you the version number of N98-Magerun like:
n98-magerun version 1.97.0 by netz98 new media GmbH
You now have successfully installed Magerun! You can tailor the installation further like installing it system-wide and enable autocomplete - read on for more information about these and other features.
If you want to use the command system wide you can copy it to /usr/local/bin.
sudo cp ./n98-magerun.phar /usr/local/bin/
Debian / suhosin:
On some Debian systems with compiled in suhosin the phar extension must be added to a whitelist.
Add this to your php.ini file:
suhosin.executor.include.whitelist="phar"
You don't like the filename?
Just rename it to whatever you want. Or better: create an alias so that the original command name still works. This can be useful if you exchange scripts that are making use of magerun with other users as the canonical name is n98-magerun.phar, Some common aliases amongst the user-base are magerun or just mr even.

Install with Composer

Update

Since version 1.1.0 we deliver a self-update script within the phar file:
$ n98-magerun.phar self-update
If file was installed system wide do not forget "sudo".
See it in action: http://youtu.be/wMHpfKD9vjM

Usage / Commands

All commands try to detect the current Magento root directory. If you have multiple Magento installations you must change your working directory to the preferred installation.
You can list all available commands by:
$ n98-magerun.phar list
If you don't have the .phar file installed system wide you can call it with the PHP CLI interpreter:
php n98-magerun.phar list
Global config parameters:
--root-dirForce Magento root dir. No auto detection.
--skip-configDo not load any custom config.
--skip-root-check
Do not check if n98-magerun runs as root.

Open Shop in Browser

$ n98-magerun.phar open-browser [store]

Customer Info

Loads basic customer info by email address.
$ n98-magerun.phar  customer:info [email] [website]

Create customer

Creates a new customer/user for shop frontend.
$ n98-magerun.phar  customer:create [email] [password] [firstname] [lastname] [website]
Example:
$ n98-magerun.phar customer:create foo@example.com password123 John Doe base

Delete Customers

This will delete a customer by a given Id/Email, delete all customers or delete all customers in a range of Ids.
$ n98-magerun.phar delete [-a|--all] [-f|--force] [-r|--range] [id]
Examples:
$ n98-magerun.phar customer:delete 1                   # Will delete customer with Id 1
$ n98-magerun.phar customer:delete mike@example.com    # Will delete customer with that email
$ n98-magerun.phar customer:delete --all               # Will delete all customers
$ n98-magerun.phar customer:delete --range             # Will prompt for start and end Ids for batch deletion

Generate Dummy Customers

Generate dummy customers. You can specify a count and a locale.
$ n98-magerun.phar customer:create:dummy count locale [website]
Supported Locales:
  • cs_CZ
  • ru_RU
  • bg_BG
  • en_US
  • it_IT
  • sr_RS
  • sr_Cyrl_RS
  • sr_Latn_RS
  • pl_PL
  • en_GB
  • de_DE
  • sk_SK
  • fr_FR
  • es_AR
  • de_AT

List Customers

List customers. The output is limited to 1000 (can be changed by overriding config). If search parameter is given the customers are filtered (searchs in firstname, lastname and email).
$ n98-magerun.phar  customer:list [--format[="..."]] [search]

Change customer password

$ n98-magerun.phar customer:change-password [email] [password] [website]
  • Website parameter must only be given if more than one websites are available.

Print database information

$ n98-magerun.phar db:info [setting]
Arguments
setting Only output value of named setting

Dump database

Dumps configured Magento database with mysqldump.
  • Requires MySQL CLI tools
Arguments
filename Dump filename
Options
--add-timeAdds time to filename (only if filename was not provided)
—compression (-c) Compress the dump file using one of the supported algorithms
--only-commandPrint only mysqldump command. Do not execute
—print-only-filename Execute and prints not output except the dump filename
--no-single-transaction
Do not use single-transaction (not recommended, this is blocking)
—human-readable Use a single insert with column names per row.
--stdoutDump to stdout
—strip Tables to strip (dump only structure of those tables)
--force (-f)
Do not prompt if all options are defined
$ n98-magerun.phar db:dump
Only the mysqldump command:
$ n98-magerun.phar db:dump --only-command [filename]
Or directly to stdout:
$ n98-magerun.phar db:dump --stdout
Use compression (gzip cli tool has to be installed):
$ n98-magerun.phar db:dump --compression="gzip"

Stripped Database Dump

Dumps your database and excludes some tables. This is useful i.e. for development.
Separate each table to strip by a space. You can use wildcards like * and ? in the table names to strip multiple tables. In addition you can specify pre-defined table groups, that start with an @ Example: "dataflow_batch_export unimportant_module_* @log
$ n98-magerun.phar db:dump --strip="@stripped"
Available Table Groups:
  • @log Log tables
  • @dataflowtemp Temporary tables of the dataflow import/export tool
  • @importexporttemp Temporary tables of the Import/Export module
  • @stripped Standard definition for a stripped dump (logs, sessions, dataflow and importexport)
  • @sales Sales data (orders, invoices, creditmemos etc)
  • @customers Customer data
  • @trade Current trade data (customers and orders). You usally do not want those in developer systems.
  • @search Search related tables (catalogsearch_)
  • @development Removes logs, sessions and trade data so developers do not have to work with real customer data
  • @idx Tables with _idx suffix and index event tables
See it in action: http://youtu.be/ttjZHY6vThs

Database Import

Imports an SQL file with mysql cli client into current configured database.
  • Requires MySQL CLI tools
Arguments:
filename Dump filename
Options:
--compression (-c) The compression of the specified file --only-command Print only mysql command. Do not execute
$ n98-magerun.phar db:dump
$ n98-magerun.phar db:import [--only-command] [filename]
Use decompression (gzip cli tool has to be installed):
$ n98-magerun.phar db:import --compression="gzip" [filename]
Optimize "human readable" dump:
$ n98-magerun.phar db:import --optimize [filename]

Database Console / MySQL Client

Opens the MySQL console client with your database settings from local.xml
  • Requires MySQL CLI tools
$ n98-magerun.phar db:console

Database Create

Create currently configured database
$ n98-magerun.phar db:create

Database Drop

Drops the database configured in local.xml.
  • Requires MySQL CLI tools
$ n98-magerun.phar db:drop  [-f|--force]

Database Query

Executes an SQL query on the current configured database. Wrap your SQL in single or double quotes.
If your query produces a result (e.g. a SELECT statement), the output of the mysql cli tool will be returned.
  • Requires MySQL CLI tools
Arguments:
query SQL query
Options:
--only-commandPrint only mysql command. Do not execute
$ n98-magerun.phar db:query [--only-command] [query]

Database Variables

See the most important MySQL variables of your Magento instance.
$ n98-magerun.phar db:variables [--format[="..."]] [--rounding[="..."]] [--no-description] [search]

Database Status

This command is useful to print important server status information about the current database.
$ n98-magerun.phar [--format[="..."]] [--rounding[="..."]] [--no-description] [search]

Dump Media folder

Creates a ZIP archive with media folder content.
$ n98-magerun.phar media:dump [--strip] [filename]
If strip option is set, the following folders are excluded:
  • js (combined js files)
  • css (combined css files)
  • catalog/product/cache

Create Gift Card Pool

Creates a new giftcard pool
$ n98-magerun.phar giftcard:pool:generate

Create a Gift Card

$ n98-magerun.phar giftcard:create [--website[="..."]] amount
You may specify a website ID or use the default

View Gift Card Information

$ n98-magerun.phar giftcard:info [--format[="..."]] code

Remove a Gift Card

$ n98-magerun.phar giftcard:remove code

List Indexes

$ n98-magerun.phar index:list [--format[="..."]]

Reindex a Index

Index by indexer code. Code is optional. If you don't specify a code you can pick a indexer from a list.
$ n98-magerun.phar index:reindex [code]
Since 1.75.0 it's possible to run mutiple indexers by seperating code with a comma.
i.e.
$ n98-magerun.phar index:reindex catalog_product_attribute,tag_summary
If no index is provided as argument you can select indexers from menu by "number" like "1,3" for first and third indexer.

Reindex All

Loops all Magento indexes and triggers reindex.
$ n98-magerun.phar index:reindex:all

Generate local.xml file

$ n98-magerun.phar local-config:generate

Config Dump

Dumps merged XML configuration to stdout. Useful to see all the XML.
$ n98-magerun.phar [xpath]

Examples

Config of catalog module:
$ n98-magerun.phar config:dump global/catalog
See module order in XML:
$ n98-magerun.phar config:dump modules
Write output to file:
$ n98-magerun.phar config:dump > extern_file.xml

Set Config

$ n98-magerun.phar config:set [--scope[="..."]] [--scope-id[="..."]] [--encrypt] [--force] path value
Arguments:
path The config path value The config value
Options:
--scopeThe config value's scope (default: "default" | Can be "default", "websites", "stores")
--scope-idThe config value's scope ID (default: "0")
--encryptEncrypt the config value using local.xml's crypt key
--forceAllow creation of non-standard scope-id's for websites and stores

Get Config

$ n98-magerun.phar config:get [--scope="..."] [--scope-id="..."] [--decrypt] [--format[="..."]] [path]
Arguments:
path The config path
Options:
--scopeThe config value's scope (default, websites, stores)
--scope-idThe config value's scope ID
--decryptDecrypt the config value using local.xml's crypt key
--update-script
Output as update script lines
--magerun-script
Output for usage with config:set
--formatOutput as json, xml or csv
Help:
If path is not set, all available config items will be listed. path may contain wildcards (*)
Example:
$ n98-magerun.phar config:get web/* --magerun-script

Delete Config

$ n98-magerun.phar config:delete [--scope[="..."]] [--scope-id[="..."]] [--all] [--force] path
Arguments:
path The config path
Options:
--scopeThe config scope (default, websites, stores)
--scope-idThe config value's scope ID
--allDeletes all entries of a path (ignores --scope and --scope-id)
--forceAllow deletion of non-standard scope-id's for websites and stores

Config Search

Search system configuration descriptions.
$ n98-magerun.phar text

List Magento cache status

$ n98-magerun.phar cache:list

Clean Magento cache

Cleans expired cache entries.
If you would like to clean only one cache type:
$ n98-magerun.phar cache:clean [code]
If you would like to clean multiple cache types at once:
$ n98-magerun.phar cache:clean [code] [code] ...
If you would like to remove all cache entries use cache:flush
Run cache:list command to see all codes.

Remove all cache entries

$ n98-magerun.phar cache:flush

List Magento caches

$ n98-magerun.phar cache:list [--format[="..."]]

Disable Magento cache

$ n98-magerun.phar cache:disable [code]
If no code is specified, all cache types will be disabled. Run cache:list command to see all codes.

Enable Magento cache

$ n98-magerun.phar cache:enable [code]
If no code is specified, all cache types will be enabled. Run cache:list command to see all codes.

Cache Report

This command let you investigate what's stored inside your cache. It prints out a table with cache IDs.
$ cache:report [-t|--tags] [-m|--mtime] [--filter-id[="..."]] [--filter-tag[="..."]] [--fpc]

Cache View

Prints stored cache entry by ID.
$ cache:view [--unserialize] [--fpc] id
If value is serialized you can force a pretty output with --unserialize option.

Toggle CMS Block

Toggle "is_active" on a cms block
$ n98-magerun.phar cms:block:toggle [block_id]
"block_id" can be an entity id or an "identifier"

Demo Notice

Toggle demo store notice
$ n98-magerun.phar design:demo-notice [store_code]

List admin users

$ n98-magerun.phar admin:user:list [--format[="..."]]

Create admin user

$ n98-magerun.phar admin:user:create [username] [email] [password] [firstname] [lastname] [role]

Change admin user password

$ n98-magerun.phar admin:user:change-password [username] [password]

Delete admin user

$ n98-magerun.phar admin:user:delete [email|username] [-f]
ID can be e-mail or username. The command will attempt to find the user by username first and if it cannot be found it will attempt to find the user by e-mail. If ID is omitted you will be prompted for it. If the force parameter "-f" is omitted you will be prompted for confirmation.

Toggle admin user active state

$ n98-magerun.phar admin:user:change-status [--activate] [--deactivate] [email|username]
Toggles the active status of an backend user. ID can be e-mail or username. The command will attempt to find the user by username first and if it cannot be found it will attempt to find the user by e-mail. If ID is omitted you will be prompted for it.

Lock admin user

$ n98-magerun.phar admin:user:lock [username] [lifetime]
Locks an admin user for the number of days specified in [lifetime]. If not provided, the lifetime will default to 31 days.

Lock all admin users

$ n98-magerun.phar admin:user:lockdown [lifetime] [--dry-run]
Locks all admin users in the system for the number of days specified in [lifetime]. As above, if not provided it will default to 31 days.
Use with caution! Use the --dry-run option to test first.

Unlock admin user

$ n98-magerun.phar admin:user:unlock [username]
Releases the password lock on an admin (leave blank to unlock all admins).

Disable admin notifications

Toggle admin notifications.
$ n98-magerun.phar admin:notifications

Maintenance mode

If no option is provided it toggles the mode on every call.
$ n98-magerun.phar sys:maintenance [--on] [--off]

Magento system info

Provides info like the edition and version or the configured cache backends.
$ n98-magerun.phar sys:info [key]
Print only one value like the version.
$ n98-magerun.phar sys:info version

Magento Stores

Lists all store views.
$ n98-magerun.phar sys:store:list [--format[="..."]]

Magento Store Config - BaseURLs

Lists base urls for each store.
$ n98-magerun.phar sys:store:config:base-url:list [--format[="..."]]

Magento Websites

Lists all websites.
$ n98-magerun.phar sys:website:list [--format[="..."]]

List Cronjobs

Lists all cronjobs defined in config.xml files.
$ n98-magerun.phar sys:cron:list [--format[="..."]]

Run Cronjob

Runs a cronjob by code.
$ n98-magerun.phar sys:cron:run [job]
If no job argument is passed you can select a job from a list. See it in action: http://www.youtube.com/watch?v=QkzkLgrfNaM

Cronjob History

Last executed cronjobs with status.
$ n98-magerun.phar sys:cron:history [--format[="..."]] [--timezone[="..."]]

List URLs

$ n98-magerun.phar sys:url:list [--add-categories] [--add-products] [--add-cmspages] [--add-all] [stores] [linetemplate]
Examples:
  • Create a list of product urls only:
$ n98-magerun.phar sys:url:list --add-products 4
  • Create a list of all products, categories and cms pages of store 4 and 5 separating host and path (e.g. to feed a jmeter csv sampler):
$ n98-magerun.phar sys:url:list --add-all 4,5 '{host},{path}' > urls.csv
  • The "linetemplate" can contain all parts "parse_url" return wrapped in '{}'. '{url}' always maps the complete url and is set by default

Run Setup Scripts

Runs all setup scripts (no need to call frontend). This command is useful if you update your system with enabled maintenance mode.
$ n98-magerun.phar sys:setup:run

Run Setup Scripts Incrementally

Runs setup scripts incrementally. (no need to call frontend). This command runs each new setup script individually in order to increase the transparency of the setup resource system, and reduce the chances of a PHP failure creating an invalid database state.
$ n98-magerun.phar sys:setup:incremental [--stop-on-error]

Compare Setup Versions

Compares module version with saved setup version in core_resource table and displays version mismatch.
$ n98-magerun.phar sys:setup:compare-versions [--ignore-data] [--errors-only] [--log-junit="..."] [--format[="..."]]
  • If a filename with --log-junit option is set the tool generates an XML file and no output to stdout.
  • If status errors are found this will return an exit status of 1 rather than 0, making it perfect for hooking into deployment scripts.

Change Setup Version

Changes the version of one or all module resource setups. This command is useful if you want to re-run an upgrade script again possibly due to debugging. Alternatively you would have to alter the row in the database manually.
$ n98-magerun.phar sys:setup:change-version module version [setup]
Setup argument default is "all resources" for the given module.

Remove Setup Version

Removes the entry for one or all module resource setups. This command is useful if you want to re-run an install script again possibly due to debugging. Alternatively you would have to remove the row from the database manually.
$ n98-magerun.phar sys:setup:remove module [setup]
Setup argument default is "all resources" for the given module.

System Check

  • Checks missing files and folders
  • Security
  • PHP Extensions (Required and Bytecode Cache)
  • MySQL InnoDB Engine
$ n98-magerun.phar sys:check

CMS: Toggle Banner

Hide/Show CMS Banners
$ n98-magerun.phar cms:banner:toggle <banner_id>

CMS: Publish a page

Publishes a page by page id and revision.
$ n98-magerun.phar cms:page:publish <page_id> <revision_id>
Useful to automatically publish a page by a cron job.

Interactive Development Console

Opens PHP interactive shell with initialized Magento Admin-Store.
$ n98-magerun.phar dev:console
The command is only available for PHP 5.4 users.

CSS Merging

Toggle CSS merging settings of a store
$ n98-magerun.phar dev:merge-css [store_code]

JS Merging

Toggle JS merging settings of a store
$ n98-magerun.phar dev:merge-js [store_code]

Template Hints

Toggle debug template hints settings of a store
$ n98-magerun.phar dev:template-hints [store_code]

Template Hints Blocks

Toggle debug template hints blocks settings of a store
$ n98-magerun.phar dev:template-hints-blocks [store_code]

Inline Translation

Toggle settings for shop frontend:
$ n98-magerun.phar dev:translate:shop [store_code]
Toggle for admin area:
$ n98-magerun.phar dev:translate:admin

Export Inline Translation

Exports saved database translation data into a file.
$ n98-magerun.phar dev:translate:export [locale] [filename]

Profiler

Toggle profiler for debugging a store:
$ n98-magerun.phar dev:profiler [--on] [--off] [--global] [store]

Development Logs

Activate/Deactivate system.log and exception.log for a store:
$ n98-magerun.phar dev:log [--on] [--off] [--global] [store]
Show size of a log file:
$ n98-magerun.phar dev:log:size [--human] [log_filename]
Activate/Deactivate MySQL query logging via lib/Varien/Db/Adapter/Pdo/Mysql.php
$ n98-magerun.phar dev:log:db [--on] [--off]

Setup Script Generation

Generate Script for attributes:
$ n98-magerun.phar dev:setup:script:attribute entityType attributeCode
i.e.
$ n98-magerun.phar dev:setup:script:attribute catalog_product color
Currently only catalog_product entity type is supported.

EAV Attributes

List all EAV attributes:
$ n98-magerun.phar eav:attribute:list [--filter-type[="..."]] [--add-source] [--add-backend] [--format[="..."]]
View the data for a particular attribute:
$ n98-magerun.phar eav:attribute:view [--format[="..."]] entityType attributeCode
Remove an attribute:
$ n98-magerun.phar eav:attribute:remove entityType attributeCode
You can also remove multiple attributes in one go if they are of the same type
$ n98-magerun.phar eav:attribute:remove entityType attributeCode1 attributeCode2 ... attributeCode10

Development IDE Support

PhpStorm Code Completion -> Meta file generation.
$ n98-magerun.phar dev:ide:phpstorm:meta [--stdout]

Reports

Prints count of reports in var/reports folder.
$ n98-magerun.phar dev:report:count

Resolve/Lookup Class Names

Resolves the given type and grouped class name to a class name, useful for debugging rewrites.
If the resolved class doesn't exist, an info message will be displayed.
$ n98-magerun.phar dev:class:lookup <block|model|helper> <name>
Example:
$ n98-magerun.phar dev:class:lookup model catalog/product

Toggle Symlinks

Allow usage of symlinks for a store-view:
$ n98-magerun.phar dev:symlinks [--on] [--off] [--global] [store_code]
Global scope can be set by not permitting store_code parameter:
$ n98-magerun.phar dev:symlinks

Create Module Skel

Creates an empty module and registers it in current Magento shop:
$ n98-magerun.phar dev:module:create [--add-blocks] [--add-helpers] [--add-models] [--add-setup] [--add-all] [--modman] [--add-readme] [--add-composer] [--author-name[="..."]] [--author-email[="..."]] [--description[="..."]] vendorNamespace moduleName [codePool]
Code-Pool defaults to local.
Example:
$ n98-magerun.phar dev:module:create MyVendor MyModule
  • --modman option creates a new folder based on vendorNamespace and moduleName argument.
Run this command inside your .modman folder.
  • --add-all option add blocks, helpers and models.
  • --add-readme Adds a readme.md file to your module.
  • --add-composer Adds a composer.json to your module.
  • --author-email Author email for composer.json file.
  • --author-name Author name for composer.json file.
$ n98-magerun.phar dev:code:model:method [modelName]

Enable/Disable Module in Declaration

Enable or disable a module in app/etc/modules/*.xml by name or codePool:
$ n98-magerun.phar dev:module:enable [--codepool="..."] moduleName
$ n98-magerun.phar dev:module:disable [--codepool="..."] moduleName
Examples:
$ n98-magerun.phar dev:module:disable MyVendor_MyModule
$ n98-magerun.phar dev:module:disable --codepool="community"
Hint
If --codepool option is specified all modules in the codepool are affected.

List Modules

Lists all installed modules with codepool and version
$ n98-magerun.phar dev:module:list  [--codepool[="..."]] [--status[="..."]] [--vendor=[="..."]] [--format[="..."]]

Rewrite List

Lists all registered class rewrites.
$ n98-magerun.phar dev:module:rewrite:list [--format[="..."]]

Rewrite Conflicts

Lists all duplicated rewrites and tells you which class is loaded by Magento. The command checks class inheritance in order of your module dependencies.
$ n98-magerun.phar dev:module:rewrite:conflicts [--log-junit="..."]
  • If a filename with --log-junit option is set the tool generates an XML file and no output to stdout.

Module Dependencies

Show list of modules which given module depends on
$ n98-magerun.phar dev:module:dependencies:on [-a|--all] [--format[="..."]] moduleName
Show list of modules which depend from module
$ n98-magerun.phar dev:module:dependencies:from [-a|--all] [--format[="..."]] moduleName

Observer List

Lists all registered observer by type.
$ n98-magerun.phar dev:module:observer:list [type]
Type is one of "adminhtml", "global", "frontend".

Theme List

Lists all frontend themes
$ n98-magerun.phar dev:theme:list [--format[="..."]]

Find Duplicates in your theme

Find duplicate files (templates, layout, locale, etc.) between two themes.
$ n98-magerun.phar dev:theme:duplicates [--log-junit="..."] theme [originalTheme]
  • originTheme default is "base/default".
Example:
$ n98-magerun.phar dev:theme:duplicates default/default
  • If a filename with --log-junit option is set the tool generates an XML file and no output to stdout.

List Extensions

List and find connect extensions by a optional search string:
$ n98-magerun.phar extension:list [--format[="..."]] <search>
  • Requires Magento's mage shell script.
  • Does not work with Windows as operating system.

Install Extensions

Installs a connect extension by package key:
$ n98-magerun.phar extension:install <package_key>
If the package could not be found a search for alternatives will be done. If alternatives could be found you can select the package to install.
  • Requires Magento's mage shell script.
  • Does not work with Windows as operating system.

Download Extensions

Downloads connect extensions by package key:
$ n98-magerun.phar extension:download <search>
  • Requires Magento's mage shell script.
  • Does not work with Windows as operating system.

Upgrade Extensions

Upgrade connect extensions by package key:
$ n98-magerun.phar extension:upgrade <search>
  • Requires Magento's mage shell script.
  • Does not work with Windows as operating system.

Magento Installer

Since version 1.1.0 we deliver a Magento installer which does the following:
  • Downloads Magento by a list of git repos and zip files (mageplus, magelte, official community packages).
  • Tries to create database if it does not exist.
  • Installs Magento sample data if available (since version 1.2.0).
  • Starts Magento installer
  • Sets rewrite base in .htaccess file
Interactive installer:
$ n98-magerun.phar install
Unattended installation:
$ n98-magerun.phar install [--magentoVersion[="..."]] [--magentoVersionByName[="..."]] [--installationFolder[="..."]] [--dbHost[="..."]] [--dbUser[="..."]] [--dbPass[="..."]] [--dbName[="..."]] [--installSampleData[="..."]] [--useDefaultConfigParams[="..."]] [--baseUrl[="..."]] [--replaceHtaccessFile[="..."]]
Example of an unattended Magento CE 1.7.0.2 installation:
$ n98-magerun.phar install --dbHost="localhost" --dbUser="mydbuser" --dbPass="mysecret" --dbName="magentodb" --installSampleData=yes --useDefaultConfigParams=yes --magentoVersionByName="magento-ce-1.7.0.2" --installationFolder="magento" --baseUrl="http://magento.localdomain/"
Additionally, with --noDownload option you can install Magento working copy already stored in --installationFolder on the given database.
See it in action: http://youtu.be/WU-CbJ86eQc

Magento Uninstaller

Uninstalls Magento: Drops your database and recursive deletes installation folder.
$ n98-magerun.phar uninstall [-f|--force] [--installationFolder[="..."]]
Please be careful: This removes all data from your installation.
--installationFolder is required and if you do not enter it you will be prompted for it. This should be your project root, not the Magento root. For example, If your project root is /var/www/site and Magento src is located at /var/www/site/htdocs, you should pass /var/www/site to the command, or if you are currently in that particular directory you can just pass "." Eg:
$ cd /var/www/site
$ n98-magerun.phar uninstall --installationFolder "." -f
If you omit the -f, you will be prompted for confirmation.

n98-magerun Shell

If you need autocompletion for all n98-magerun commands you can start with "shell command".
$ n98-magerun.phar shell

n98-magerun Script

Run multiple commands from a script file.
$ n98-magerun.phar [-d|--define[="..."]] [--stop-on-error] [filename]
Example:
# Set multiple config
config:set "web/cookie/cookie_domain" example.com

# Set with multiline values with "\n"
config:set "general/store_information/address" "First line\nSecond line\nThird line"

# This is a comment
cache:flush
Optionally you can work with unix pipes.
$ echo "cache:flush" | n98-magerun-dev script
$ n98-magerun.phar script < filename
It is even possible to create executable scripts:
Create file test.magerun and make it executable (chmod +x test.magerun):
#!/usr/bin/env n98-magerun.phar script

config:set "web/cookie/cookie_domain" example.com
cache:flush

# Run a shell script with "!" as first char
! ls -l

# Register your own variable (only key = value currently supported)
${my.var}=bar

# Let magerun ask for variable value - add a question mark
${my.var}=?

! echo ${my.var}

# Use resolved variables from n98-magerun in shell commands
! ls -l ${magento.root}/code/local
Pre-defined variables:
  • ${magento.root} -> Magento Root-Folder
  • ${magento.version} -> Magento Version i.e. 1.7.0.2
  • ${magento.edition} -> Magento Edition -> Community or Enterprise
  • ${magerun.version} -> Magerun version i.e. 1.66.0
  • ${php.version} -> PHP Version
  • ${script.file} -> Current script file path
  • ${script.dir} -> Current script file dir
Variables can be passed to a script with "--define (-d)" option.
Example:
$ n98-magerun.phar script -d foo=bar filename

# This will register the variable ${foo} with value bar.
It's possible to define multiple values by passing more than one option.

n98-magerun Script Repository

You can organize your scripts in a repository. Simply place a script in folder /usr/local/share/n98-magerun/scripts or in your home dir in folder <HOME>/.n98-magerun/scripts.
Scripts must have the file extension .magerun.
After that you can list all scripts with the script:repo:list command. The first line of the script can contain a comment (line prefixed with #) which will be displayed as description.
$ n98-magerun.phar script:repo:list [--format[="..."]]
If you want to execute a script from the repository this can be done by script:repo:run command.
$ n98-magerun.phar script:repo:run [-d|--define[="..."]] [--stop-on-error] [script]
Script argument is optional. If you don't specify any you can select one from a list.

Autocompletion

Bash

Copy the file bash_complete to n98-magerun.phar in your bash autocomplete folder. In my Ubuntu system this can be done with the following command:
$ sudo cp autocompletion/bash/bash_complete /etc/bash_completion.d/n98-magerun.phar

PHPStorm 8.0.*

A commandline tool autocompletion XML file for PHPStorm exists in subfolder autocompletion/phpstorm. Copyn98_magerun.xml into your phpstorm config folder.
Linux and Mac: ~/.WebIde80/config/componentVersions
You can also add the XML content over settings menu. For further instructions read this blog post:http://blog.jetbrains.com/webide/2012/10/integrating-composer-command-line-tool-with-phpstorm/

Advanced usage

Add your own commands

Overwrite default settings

Create the yaml config file ~/.n98-magerun.yaml. Now you can define overwrites. The original config file is config.yaml in the source root folder.
Change of i.e. default currency and admin users:
commands:
  N98\Magento\Command\Installer\InstallCommand:
    installation:
      defaults:
        currency: USD
        admin_username: myadmin
        admin_firstname: Firstname
        admin_lastname: Lastname
        admin_password: mydefaultSecret
        admin_email: defaultemail@example.com

Add own Magento repositories

Create the yaml config file ~/.n98-magerun.yaml. Now you can define overwrites. The original config file is config.yaml in the source root folder.
Add your repo. The keys in the config file follow the composer package structure.
Example:
commands:
  N98\Magento\Command\Installer\InstallCommand:
    magento-packages:
      - name: my-magento-git-repository
        version: 1.x.x.x
        source:
          url: git://myserver/myrepo.git
          type: git
          reference: 1.x.x.x
        extra:
          sample-data: sample-data-1.6.1.0

      - name: my-zipped-magento
        version: 1.7.0.0
        dist:
          url: http://www.myserver.example.com/magento-1.7.0.0.tar.gz
          type: tar
        extra:
          sample-data: sample-data-1.6.1.0

How can you help?

  • Add new commands.
  • Send me some proposals if you miss anything.
  • Create issues if you find a bug or missing a feature.

Thanks to

  • Symfony2 Team for the great console component.
  • Composer Team for the downloader backend and the self-update command.
  • Francois Zaninotto for great Faker library.
Bitdeli badge