Problemas com PHP

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?

2 curtidas

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”

1 curtida

@Natanael.755
Desculpa eh mesmo o codigo

<?php $Buttonlogin = "Login"; function checkData(){ if($_GET['username'] == "afs" && $_GET['password'] == "sggsgd"){ return true;} els[quote="Natanael.755, post:2, topic:7881, full:true"] 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" e{return false;} } ?> Login
<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.

1 curtida

@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)                           
1 curtida

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!:+1:t2:

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?

1 curtida

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

1 curtida

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

1 curtida