Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos, bom dia.
Venho mais uma vez compartilhar algo com vocês.
Estou eu, novato em MVC PHP, depois de gostar do modelo e estar entendendo, estou eu apanhando das diretivas de servidores web.
Uso servidor local (Apache), em programação estruturada nunca tive problemas, mas estou tendo agora com as actions do MVC em servidores web.
Preciso utilizar os recursos abaixo, mas dizem que não é possível liberar tudo que eu preciso, dai, minha aplicação não roda...afffff.
RewriteEngine on, RewriteCond –f e –d e RewriteRule (para o .htacces)
No http.conf do apache precisa estar ativo as linhas:
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule rewrite_module modules/mod_rewrite.so
AllowOverride All
No php.ini precisa ativar o PDO
extension=php_pdo.dll
extension=php_pdo_mysql.dll
Não posso migrar para um Cloud, por exemplo, a maioria não vai aceitar sabe $$.
Tempo estudando, montando um modelo e que decepção...
Talvez eu esteja muito errado, sim porque não, por isso peço uma orientação do que poderia estar sendo feito para corrigir tais restrições em minha aplicação para que rode em todos os Servidores Web (formas alternativas - e corretas claro). Para segurança no MVC estou usando PHPIDS.
Aguardo uma orientação dos amigos.
Abraço,
Qual o problema na realidade?
Fazer esse htaccess funcionar? Você pode ver se o servidor habilita esse módulos para você, basta que argumente seus pontos.
Mas, na real, eu acho que o bom sistema deve trabalhar independente das configurações do servidor.
Claro, o MÍNIMO de exigência de configuração você deve fazer, como por exemplo versão mínima do PHP ou módulo Rewrite ativo.
Agora tornar o seu sistema DEPENDENTE de recursos não muito comuns, é um problema, já que alguns servidores (para não dizer a maioria) são relutantes em habilitar recursos desativados desde... sempre.
O problema é que em um "determinado" Servidor, ele não encontra o meu Model.
Utilizo o
function __autoload( $file ){}
para chamar sabe.
Estou usando o seguinte código no .htaccess:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
já tive esse problema quando fui hospedar em um servidor na web.
o problema foi que o model (no meu caso foi um helper), a forma como eu declarei nao estava de acordo com o arquivo em questão, um problema de case sensitive.
dê uma debugada no código, e verifique qual model ele não está achando, às vezes é uma letrinha, mas faz diferença.
Estou verificando essa possibilidade, até então não encontrei nada mas vou continuar para ver se não acho alguma coisa no fonte...
Sei lá...estranho isso
Ahhhhh.... Quanto a isso, basta deixar de usar __autoload() e usar spl_autoload_register() :thumbsup:
Verifique os caminhos se estão corretos, também tive problemas com o autoload e era questão de paths:
Vai uma dica;
Tipo no public/index.php
set_include_path('.'
. PATH_SEPARATOR . realpath('../alguma_coisa')
. PATH_SEPARATOR . get_include_path()
);
require_once 'classe.php';
spl_autoload_register(array('classe', 'funcao_para_autoload'));é estranho porque local funciona...habilitei o LoadModule speling_module modules/mod_speling.so local e continuou funcionando...
apenas para testes,
tanto local quanto no host online faça
test1.php
echo ini_get('include_path'); exit;
deve retornar a lista de include_path
verifique também se há uma definição para BASEDIR
open_basedir.php
echo ini_get('open_basedir'); exit;
(caso não exista não retornará nada)
referente "include_path", no modo local retornou:
.;C:\diretoriodophp\pear
e on-line:
.:/usr/diretoriodophp/pear
referente "open_basedir", não retornou nada, nem local, nem on-line.
quanto ao uso do
spl_autoload_register
sem alterações, ficou na mesma...
obs. vou tentar o PATH_SEPARATOR no public index...
vou até postar a função do autoload a seguir...
function __autoload($arquivo){
if (file_exists(DIR_MODELS . $arquivo . '.php'))
require_once(DIR_MODELS . $arquivo . '.php');
else if (file_exists(DIR_HELPERS . $arquivo . '.php'))
require_once(DIR_HELPERS . $arquivo . '.php');
else
die("ERRO: MODEL OU HELPER AUSENTE");
}
OBS: Obrigado a todos que estão colaborando...
opaaa....descobria qui que o erro está nas paths...só falta descobrir onde...afff
* descobri (corrigindo)...
estou usando estes caminhos? alguma sugestão?
define('DIR_CONTROLLERS','app/controllers/');
define('DIR_VIEWS','app/views/');
define('DIR_MODELS ','app/models/');faça assim pra debugar:
die("ERRO: MODEL ".DIR_MODELS . $arquivo . ".php OU HELPER ".DIR_HELPERS . $arquivo . ".php AUSENTE");
ficará mais claro onde está o erro.
Amigos, descobri onde estava o erro.
Realmente o erro foi case sensitive. O amigo "Custellinha", estava certo.
Debuguei o fonte e encontrei o problema que estava na chamada dos Models, ou seja, no nome do arquivo mesmo.
Agradeço muito a todos que aqui participaram e leram este tópico, aos moderadores também.
Espero que como eu mais alguém possa resolver problemas similares, afinal, neste tópico foram citadas questões muito importantes.
Um grande abraço a toda a comunidade, a todos os amigos.
Abraços,
(Moderador, por favor coloque como RESOLVIDO? OBRIGADO)
quais os requisitos do seu sistema e quais as restrições que encontrou nos hosts em que tentou usar ?