Olá, há algum tempo venho tentando rodar uma aplicação bem básica que desenvolvi usando o doctrine. Estou usando minha VPS para testar na web pois na hospedagem compartilhada não obtive muito sucesso. já que em minha localhost funcionou perfeitamente, instalei o composer, php e outras dependências tudo certinho (creio eu) na VPS. O composer funcionou certinho então logo rodei o composer install
, com o arquivo composer.json no diretório definido para a instalação da aplicação, tudo funcionou perfeitamente, instalou os packages, tranquilo... Logo então
usei o comando vendor/bin/doctrine list
para listar os comandos e aparece:
composer.json
{
"name": "vgpdesign/armarioswebsite",
"description": "Web site Marcenaria Belas Artes",
"type": "libary",
"autoload": {
"psr-4": {
"MBA\\": "src/"
}
},
"authors": [
{
"name": "Vinicius Gomes",
"email": "vinilgomeez@gmail.com"
}
],
"require": {
"symfony/orm-pack": "^2.2",
"psr/http-message": "^1.0",
"nyholm/psr7": "^1.5",
"psr/http-factory": "^1.0",
"nyholm/psr7-server": "^1.0",
"psr/http-server-handler": "^1.0",
"php-di/php-di": "^6.0",
"phpmailer/phpmailer": "^6.7.1"
},
"config": {
"bin-dir": "vendor/bin/"
}
}
EntityManagerCreator:
<?php
namespace MBA\Helper;
use Doctrine\ORM\ORMSetup;
use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManager;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Tools\DsnParser;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Mapping\Driver\AttributeDriver;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Adapter\PhpFilesAdapter;
use Doctrine\Persistence\Mapping\Driver\StaticPHPDriver;
class EntityManagerCreator
{
/** @return EntityManagerInterface **/
public function getEntityManager(): EntityManagerInterface
{
$paths = [ __DIR__ . '/../app/model/entities'];
$proxyDir = __DIR__ . '/../data/proxies';
$isDevMode = false;
if ($isDevMode === TRUE) {
$queryCache = new ArrayAdapter();
$metadataCache = new ArrayAdapter();
} else {
$queryCache = new PhpFilesAdapter('doctrine_queries');
$metadataCache = new PhpFilesAdapter('doctrine_metadata');
}
$config = new Configuration;
$config->setMetadataCache($metadataCache);
$driverImpl = new AttributeDriver([ __DIR__ . '/../app/model/entities']);
$config->setMetadataDriverImpl($driverImpl);
$config->setQueryCache($queryCache);
$config->setProxyDir(__DIR__ . '/../data/proxies');
$config->setProxyNamespace('MBA\Proxies');
if ($isDevMode === TRUE) {
$config->setAutoGenerateProxyClasses(true);
} else {
$config->setAutoGenerateProxyClasses(false);
}
$connection = DriverManager::getConnection([
'driver' => 'pdo_mysql',
'dbname' => 'web', // Alterado antes de subir para o servidor.
'user' => 'web', // Alterado antes de subir para o servidor.
'password' => 'admin001', // Alterado antes de subir para o servidor.
'host' => 'localhost', // Alterado antes de subir para o servidor.
'memory' => true
]);
return new EntityManager($connection, $config);
}
}
CLI :
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use MBA\Helper\EntityManagerCreator;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider;
$entityManager = new EntityManagerCreator();
$em = $entityManager->getEntityManager();
return ConsoleRunner::run( new SingleManagerProvider($em), []);
//return ConsoleRunner::createHelperSet($em);
Estrutura de pastas:
Eu creio que seja alguma coisa relacionada a autoload, porque se eu der require_once
nas classes acho que funcionaria, porém fica inviável.
Estou usando o Ubuntu 22.04 64bit com o CloudPanel.
Se alguém puder me auxiliar eu agradeço muito !