This is what I use... It's very useful.
<?php # # Automate the creation of the Zend MVC Framework # Script Written by: Fernando Barajas # Usage: php ./zendcreate.php # # Create the Zend MVC Framework. define('ZEND_FILE_TYPE', '.tar.gz'); define('ZEND_FILE_NAME', 'ZendFramework-1.5.0'. ZEND_FILE_TYPE); define('ZEND_FRAMEWORK_URL', 'http://framework.zend.com/releases/ZendFramework-1.5.0/'. ZEND_FILE_NAME); define('APPLICATION_NAME', 'zend_'. time()); passthru("wget ". ZEND_FRAMEWORK_URL); if(file_exists(ZEND_FILE_NAME)) { # unzip the file -- tar zxvf ./ZEND_FILE_NAME passthru("tar zxvf ". ZEND_FILE_NAME); # Make the Applications Directories passthru("mkdir ". APPLICATION_NAME); # Move the Library directory into the application directory passthru("mv ./". basename(ZEND_FILE_NAME, ZEND_FILE_TYPE) ."/library ./". APPLICATION_NAME ."/library"); # Make the App Directory passthru("mkdir ". APPLICATION_NAME ."/app"); passthru("mkdir ". APPLICATION_NAME ."/app/controllers"); passthru("mkdir ". APPLICATION_NAME ."/app/models"); passthru("mkdir ". APPLICATION_NAME ."/app/views"); passthru("mkdir ". APPLICATION_NAME ."/app/views/scripts"); # Make the public Directory passthru("mkdir ". APPLICATION_NAME ."/public"); # Make the Front Controller / Bootstrap file $zend_bootstrap_code = ' <?php # Set Error Reporting error_reporting(E_ALL|E_STRICT); ini_set(\'display_errors\', \'on\'); # Set include path the DOCUMENT_ROOT / library for Zend Library ini_set(\'include_path\', $_SERVER[\'DOCUMENT_ROOT\']."/../library"); # Zend Framework Includes require_once \'Zend/Loader.php\'; Zend_Loader::loadClass(\'Zend_Controller_Front\'); # Un-Comment the two lines below if you will be using Routes # Most likely you will be. I recommend that you do. # They are very useful # # Zend_Loader::loadClass(\'Zend_Controller_Router_Rewrite\'); # Zend_Loader::loadClass(\'Zend_Controller_Router_Route_Regex\'); # # Get the front controller instance $front = Zend_Controller_Front::getInstance(); $front->setControllerDirectory("../app/controllers"); $front->throwExceptions(true); # # Get an Instance For Routing # $route = $front->getRouter(); // Returns a rewrite router by default # $route->addRoute(\'user\', # new Zend_Controller_Router_Route(\'user/:username\', array(\'controller\' => \'index\', \'action\' => \'test\')) # ); # # $route->addRoute(\'product\', # new Zend_Controller_Router_Route_Regex(\'product/(\d+)\', array(\'controller\' => \'index\', \'action\' => \'test\')) # ); # # $route->addRoute(\'login\', # new Zend_Controller_Router_Route_Regex(\'login\', array(\'controller\' => \'index\', \'action\' => \'test\')) # ); # # Start the dispatch $front->dispatch(); ?> '; # Write the Bootstrap file file_put_contents("./". APPLICATION_NAME ."/public/index.php", trim($zend_bootstrap_code)); # Write The Index Controller $zend_index_controller_code = ' <?php class IndexController extends Zend_Controller_Action { public function indexAction() { # => Logic code here... $this->view->random_number = rand(0,10); $this->view->status = "It works!"; $this->render("index"); } } ?> '; # Write the First Index Controller file_put_contents("./". APPLICATION_NAME ."/app/controllers/IndexController.php", trim($zend_index_controller_code)); # Write the index view file $zend_index_view_code = ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Zend Framework</title> </head> <body> <h2>Status: <?= $this->status ?></h2> <div> Random Number: <?= $this->random_number ?> </div> </body> </html> '; # Write the First Index View File passthru("mkdir ./". APPLICATION_NAME ."/app/views/scripts/index"); file_put_contents("./". APPLICATION_NAME ."/app/views/scripts/index/index.phtml", $zend_index_view_code); # Create the .htaccess file $zend_htaccess_code = ' RewriteEngine On RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php '; # Write the .htaccess code to disk file_put_contents("./". APPLICATION_NAME ."/public/.htaccess", trim($zend_htaccess_code)); # Delete the Downloaded Framework Directory and tar file passthru("rm -f ./". ZEND_FILE_NAME); passthru("rm -rf ./". basename(ZEND_FILE_NAME, ZEND_FILE_TYPE)); passthru("clear"); echo "\nZend Framework has been created... Done!\n\n"; } ?>