Pessoal estou com um problema.
Estou fazendo um sistema de login para o meu localhost pelo apache2 usando PHP7.3
Mas toda a vez que eu tento usar header para redirecionar a pagina para outro arquivo ele buga.
Tentei fazer vários outros testes e da erro 500 no GET.
Alguem tem ideia do porque?
Sem o código fica complicado ajudar, o código 500 é um catch all pra qualquer erro interno do servidor é tipo “comando x terminou com o código de erro 1”
@Natanael.755
Desculpa eh mesmo o codigo
<body>
<?php
if(checkData()){ echo $Buttonlogin;}
else{echo “erro de login”;}
Desculpe se não aparecer certinho
rapaz esse post é quase ilegível. Use Markdown ( “```php” para abrir e “```” para fechar, sem as aspas ) e fica do género:
<?php
echo 'Hello World';
?>
Pelo que entendi o seu código é algo deste género
<?php
$Buttonlogin = "Login";
function checkData(){
if($_GET['username'] == "afs" && $_GET['password'] == "sggsgd"){
return true;
} else {
return false;
}
}
?>
<html>
<head>
</head>
<body>
<?php
if(checkData()){
echo $Buttonlogin;
}
else{
echo “erro de login”;
}
?>
</body>
</html>
Deste código PHP eu não encontro nenhum erro de sintaxe. O erro 500 é um erro do servidor logo o apache deve estar mal configurado.
Que tutorial seguiu para instalar o apache? Fez alguma modificação? Se sim, qual?
Este tutorial de instalação do LAMP (Apache + PHP + MySQL) funciona muito bem para o Ubuntu e seus derivados
Se isto não ajudar, tem de passar mais detalhes para podermos ajudar.
@SmeagolISEP
Eu suspeito que o erro seja no arquivo de configuraçao do apache2 sabe
/etc/apache2/sites-available/000-default.conf
Mandarei o codigo do config, e agradeço pela dica de legibilidade dos codigos
Segue o conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin giulliano@localhost
DocumentRoot /var/www/html
ServerName localhost
<Directory /var/www/html>
Options Indexes FollowSymlinks
Options +ExecCGI
SetHandler cgi-script
AddHandler cgi-script .php .py .pl .java
Require all granted
Order allow,deny
Allow from all
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
#vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Ja agradeço a ajuda
Olha eu acho que o problema esta aqui
<Directory /var/www/html>
Options Indexes FollowSymlinks
Options +ExecCGI
SetHandler cgi-script
AddHandler cgi-script .php .py .pl .java
Require all granted
Order allow,deny
Allow from all
</Directory>
Eu tenho um servidor com uma aplicação local apenas com esta config
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Experimente esta configuração e diga-me se funcionou. Siga estes passos para testar
cd /etc/apache2/sites-available/ #muda de diretorio para a pasta das configs do apache
sudo cp 000-default.conf 000-default.conf.bck #cria um backup do ficheiro de config. Deve fazer sempre isso!
sudo nano 000-default.conf #abre o ficheiro com oeditor nano
copia a configuração que eu passe e grava pressionando CTRL+X
por fim executa estes comando
sudo service apache2 restart
sudo service apache2 status
O resultado destes últimos comandos deve ser algo deste genero
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Sat 2019-08-10 23:22:41 UTC; 1min 0s ago Process: 2128 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 2134 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 2149 (apache2)
Tasks: 6 (limit: 2307)
CGroup: /system.slice/apache2.service
├─2149 /usr/sbin/apache2 -k start
├─2154 /usr/sbin/apache2 -k start
├─2155 /usr/sbin/apache2 -k start
├─2156 /usr/sbin/apache2 -k start
├─2157 /usr/sbin/apache2 -k start
└─2159 /usr/sbin/apache2 -k start
Aug 10 23:22:41 SERVER systemd[1]: Starting The Apache HTTP Server...
Aug 10 23:22:41 SERVER apachectl[2134]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2001:8a0:e7f8:b100:203:dff:fefb:f2a4. Set the 'ServerName'Aug 10 23:22:41 SERVER systemd[1]: Started The Apache HTTP Server.
lines 1-20/20 (END)
Eu acabei descobrindo o problema
Não estava possibilitando o cgi do php. tinha um bug na configuração do CGI, ja consertei muitissimo obrigado!
Sempre as ordens
Uma pergunta. O uso da instalação do Apache SQL PHP etc… tem como objetivo aprender a configurar o servidor, ou é só para ter um servidor para trabalhar?
Meio que ambos.
Pretendo melhorar meus conhecimentos de servidores e etc. mas gosto de aprender fazendo e lendo manuais e documentaçoes de sistemas e linguagens.
Sem falar que livra bastante o tedio, sempre tem algo novo para fazer
Então tenho alguns conselhos para lhe dar que podem ser bastante úteis.
O primeiro é que evite usar a sua instalação como ambiente de desenvolvimento. Normalmente a maquina de um Dev costuma ter muito software instalado e no meio do desenvolvimento acabamos por usar bibliotecas do nosso sistema que nem damos conta e no momento do deploy (implementação do projeto no servidor final) é uma dor de cabeça.
Use uma VM ou containers para isolar os ambientes e evitar futuras dores de cabeça.
Se o foco for principalmente o desenvolvimento e a config do servidor não for tão importante, eu aconselho o uso do do Homestead feito pela equipa do Laravel. O Laravel é um dos frameworks PHP mais conhecidos e usados do mundo. Recomendo que estude também.
O Homestead ( Laravel Homestead - Laravel - The PHP Framework For Web Artisans ) é uma ferramenta que serve para criar um ambiente de desenvolvimento em minutos. Usa por base o Vagrant que é uma ferramenta que cria e configura máquinas virtuais em minutos
Fica mesmo muito fácil. Eu subi uma VM com o Ubuntu Server totalmente configurado em 5 minutos com esta ferramenta.
Se o foco é também a configuração do servidor e do ambiente de produção, então recomendo que estude o Docker. Hoje em dia as empresas querem é Docker, pois o deploy é super rápido. Também para docker existe algumas ferramentas que auxiliam a criação do ambiente de desenvolvimento rápidamente. Uma delas é o Laradock
Para aprender a usar o Docker e o Laravdock deixo aqui estes dois videos
Nem sempre (embora tenha sido o caso) um erro fatal no script PHP com o pho configurado pra não exibir mensagens de erro causa o Error 500 também, por isso pedi o código
Marque escolha a resposta e marque como resolvido