Follow bellow steps
Step : 1 (module.xml)
app/code/Ccc/HelloWorld/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
<module name="Ccc_HelloWorld" setup_version="1.0.1">
</module>
</config>
Step : 2 (routes.xml)
app/code/Ccc/HelloWorld/etc/frontend/routes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
<router id="standard">
<route id="helloworld" frontName="helloworld">
<module name="Ccc_HelloWorld" />
</route>
</router>
</config>
Step : 3 (registration.php)
app/code/Ccc/HelloWorld/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Ccc_HelloWorld',
__DIR__
);
Step : 4 (Index.php)
app/code/Ccc/HelloWorld/Controller/Index/Index.php
<?php
namespace Ccc\HelloWorld\Controller\Index;
use Magento\Framework\View\Result\PageFactory;
class Index extends \Magento\Framework\App\Action\Action
{
protected $resultPageFactory;
/** * @param \Magento\Framework\App\Action\Context $context */
public function __construct(\Magento\Framework\App\Action\Context $context,PageFactory $resultPageFactory)
{
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
public function execute()
{
$resultPage = $this->resultPageFactory->create();
$resultPage->getConfig()->getTitle()->prepend(__('Hello World'));
return $resultPage;
}
}
Step : 5 (HelloWorld.php)
app/code/Ccc/HelloWorld/Block/HelloWorld.php
<?php
namespace Ccc\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
public function _prepareLayout()
{
return parent::_prepareLayout();
}
}
Step : 6 (helloworld_index_index.xml)
app/code/Ccc/HelloWorld/view/frontend/layout/helloworld_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Ccc\HelloWorld\Block\HelloWorld" name="helloworld" template="helloworld.phtml">
</block>
</referenceContainer>
</body>
</page>
Step : 7 (helloworld.phtml)
app/code/Ccc/HelloWorld/view/frontend/templates/helloworld.phtml
<?php
echo 'Successful! This is a simple module in Magento 2.0';
?>
Step : 8 (rerun magento setup - this will re-generate app/etc/config.php & enable the module)
php-cli bin/magento setup:upgrade
I also flush the cache of the admin panel.
Best Answer
I ran into the same issue today. It appeared that the
app/etc/env.php
was missing. This means that Magento was not yet installed. During Magento installation it will create this file, so:app/etc/
is writable for the magento user/webuserbin/magento setup:install ...params...
In my case, some script that I made was not copying my
env.php
file into theapp/etc/
folder.It is also possible that the file is there, but it is not readable for the Magento user/webuser.