não consigo executar o arquivo php [duplicado]

0

Eu comecei a trabalhar no Ubuntu 16.04 Mini, e acabei de estrelar trabalhando em PHP. Quando eu criar o arquivo php e colocar no diretório /var/www/ubunturock/dummy.php e executar o servidor apache e quando eu for para o meu endereço ubunturock/dummy.php eu recebo o meu arquivo de código PHP. Alguma idéia?

Aqui está o meu código PHP também:

<?php
$servername='localhost';
$username='root';
$password='root';

$schema='demir';

$conn=mysql_connect($servername, $username, $password) or
    die('Connection failed : ' . $conn-> connect_error);

mysql_select_db($schema);

$result=mysql_query('SELECT * FROM topics');

echo '<h1>All Topics</h1><br>';
echo '<table>';
echo '<tr><td>ID</td><td>Name</td></tr>';
while($row = mysql_fetch_assoc($result)){
    echo '<tr>';
    echo '<td>' .$row['id'].'</td>';
    echo '<td>' .$row['name'].'</td>';
    echo '</tr>';
}
echo '</table>';
?>
    
por yimy 08.11.2016 / 00:37

1 resposta

0

O Apache é um servidor web, então ele basicamente faz o que os servidores web estão lá: você (ou seu navegador) pede um arquivo, e ele envia aquele arquivo para você. O Apache por si só não "sabe" que esse arquivo contém código que você queria que fosse executado de antemão.

O PHP é executado pelo interpretador PHP. Você parecia ter instalado esse interpretador, mas precisa integrá-lo ao Apache. O ciclo de vida de um script PHP basicamente se parece com isso (um pouco antromorfizado, mas é mais fácil obter a essência dessa maneira)

  • Um cliente solicita um arquivo com o final .php .
  • O Apache sabe que tais arquivos precisam ser entregues ao interpretador PHP. Então faz isso.
  • O interpretador PHP executa o código PHP e gera a saída, que é devolvida ao Apache.
  • O Apache envia essa saída para o cliente.

Na sua configuração atual, o Apache não "sabe" que .php arquivos são especiais ou como lidar com eles. Então, ele faz exatamente como faria com qualquer outro arquivo e envia o arquivo como está.

Existem várias maneiras de integrar o interpter PHP com o Apache. Você pode usar o módulo do Apache mod_php , você pode usar a interface de gateway comum cgi ou suas versões mais recentes, como fcgi ou php-fpm . Eles diferem em aspectos como

  • como é fácil configurar
  • qual desempenho eles oferecem
  • quão extensivamente você pode configurá-los
  • quão bem você pode proteger sua configuração

Se você quer apenas um servidor para brincar e experimentar, deve ser suficiente usar mod_php simplesmente instalando o pacote libapache2-mod-php e reiniciando o Apache. Mas o SAPI (API do servidor) é bastante ruim em relação ao desempenho, quase sem opções de configuração e não muito seguro (principalmente porque, por padrão, todo processo PHP é executado pelo mesmo usuário do sistema). Não seria uma boa ideia usar isso em produção ou em um servidor conectado à Internet (o que significa que todo mundo, de Oslo a Timbuktu, pode se dedicar a isso).

Mais duas coisas: o Ubuntu 16.04 vem com o PHP 7. As funções antigas do mysql como as que você está usando, mysql_connect , mysql_query , mysql_fetch_assoc e assim por diante, foram preteridas desde o PHP 5.0 (significado desde doze anos atrás ). No PHP 7 eles foram removidos, então você não pode mais usá-los. Você deve usar os módulos mysqli ou pdo. Tutoriais sobre esses são fáceis de encontrar.

E, em segundo lugar, o pacote php contém o interpretador básico. Muitos módulos adicionais são empacotados em seus próprios pacotes, como php-mysql que você já instalou. Se você quiser usá-los, você precisa instalar o respectivo pacote.

    
por Henning Kockerbeck 08.11.2016 / 01:13