Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

laumneto13

Configurar servidor web com PHP no IIS do W7

Recommended Posts

Boa tarde.

 

Por favor. Estou precisando configurar um servidorzinho web localmente no meu computador.

 

Eu tenho Windows 7 Professional e o IIS 7.5.

 

Eu preciso instalar o MySQL e PHP.

 

Acontece que, algumas versões do PHP conflitam com o MySQL e IIS e nem sempre o que eu preciso funciona 100%

 

Sempre alguns detalhes acabam dando erro, como por exemplo o upload, outras são as variáveis que não são passadas, enfim. Testei algumas versões entre PHP e MySQL.... Algumas não dão erro nas variáveis, porém em outras coisas dão e vice versa.

 

O que eu preciso saber, qual é o PHP e MySQL exatos e corretos que eu preciso ter para funcionar 100% no IIS 7.5 no Win 7 !??????

 

Outra coisa.... Se possível, qual a configuração exata do arquivo php.ini em questão a versão que for correta ????

 

Alguém me ajuda, pelo amor DE DEUS !!!!!

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa do IIS. Em ambiente de desenvolvimento, o servidor nativo do PHP resolve bem.

 

PHP você baixa do site oficial e pronto. MySQL também (e tem até instalador visual pra Windows). Não existe "versão correta". Procure sempre usar as versões mais recentes, de preferência.

 

Você precisa ser mais claro. Que erros de upload e variáveis são esses? É bem provável que isso seja erro nos scripts, não no servidor web.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Beraldo, bom dia.

Obrigado por responder.

Então, acredito que não seja erro no script Php, pois, nos Host que eu hospedo não apresenta erro algum.

Agora no Localhost, veja bem. Se eu uso uma versão do Php, por exemplo o 5.3.29 com o MySQL 5.1.56 ou 6, quando eu utilizo o uploadify, ele faz que faz o upload, mas apresenta somente HTTP Error.

Troquei várias versões de Php e MySQL e sinceramente não lembro a sequência, mas nessas trocas, um fazia o upload ( gravava o arquivo na pasta ) mas não no banco de dados. Em outra troca, não fazia absolutamente nada.

 

Mas acontecia o seguinte:

 

Em uma ação da página, um botãozinho Edit, ele chama outra página Php passando o id de um album, desta maneira em um trecho do código.

 

'upload.php?album_id=<?= $album_id ?>'

 

Porém, na página chamada, apresentava o endereço incluindo album_id=<?= $album_id ?>

 

E em outras versões, nestas trocas, apresentava correto album_id=1, por exemplo.

 

Entendeu !?

 

Eu acredito ser sim alguma questão entre versões e modo de configuração para Windows 7 Professional, com IIS 7.5. Mas não tenho certeza e não sei como resolver....

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo que você citou (usando "<?= $variavel ?>") pode falhar simplesmente por causa da diretiva short_open_tag. Se ela estiver em off no php.ini, não vai funcionar mesmo. O correto é usar <?php echo $variavel; ?>. Isso é um "erro" do script, não do servidor. O programador é que deve programar de forma portável.

 

Essas e outras dicas e boas práticas estão aqui: http://www.ultimatephp.com.br/guia/

 

Um detalhe importante é sempre manter display_errors e error_reporting de forma a exibirem sempre todos os erros, como descrito no guia acima. Só assim saberá exatamente quais são os erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado que em todos os servidores que eu hospedei o código não dão erro algum. Funcionam perfeitamente e é sempre o mesmo código.

 

Bom, Beraldo. Eu instalei a última versão do PHP que é php-5.6.10-nts-Win32-VC11-x86 e a versão atual do MySQL para Windows mysql-installer-community-5.6.25.0

 

O PHP está rodando no IIS, pois visualizo o phpinfo.

 

Vou testar aqui agora....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado que em todos os servidores que eu hospedei o código não dão erro algum. Funcionam perfeitamente e é sempre o mesmo código.

Depende da configuração do PHP em cada servidor. Se eles estiverem com short_open_tag ativado, seu script funcionará.

 

Por isso é recomendável sempre usar tags completas. Quanto mais portávle seu código for, menos problemas você terá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi Beraldo....

Veja se pode me ajudar.... Está tudo instalado e rodando.... Acredito estar OK. Exceto algumas configurações do php.ini. Pois tento abrir a página php que faz conexão com o banco e não exibe nada, a página fica em branco. Não apresenta erro.

 

O que eu preciso setar no php.ini realmente !?

 

Outra coisa que notei é que, uma página php carrega com uma determinada palavra Álbuns, a letra Á aparece um losando com uma interrogação, se eu clico em cima dele, ele mostra a letra Á.

 

Mas tem outra palavra com a letra Á e carrega normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite todas as exibições de erro como mostrado neste tópico

Essas e outras dicas: http://www.ultimatephp.com.br/guia/

 

Sobre os erros de caracteres acentuados: http://rberaldo.com.br/problemas-com-codificacao-acentos-nao-interpretados/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha Beraldo, me desculpe, mas nada está sendo válido.

Meu Banco de dados está como utf-8, a página está como charset utf8, não está fazendo sentido o que está dizendo, pois como eu disse, existem 2 palavras idênticas ÁLBUNS. Uma aparece com o símbolo a outra não !!!!!!!!!!!

E o código que você disse para mostrar erros, não traz nada !!!! No php.ini já está configurado para On para mostrar os erros....

Rapaz, não é possível que a gente não consiga sair disso....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu Banco de dados está como utf-8, a página está como charset utf8, não está fazendo sentido o que está dizendo, pois como eu disse, existem 2 palavras idênticas ÁLBUNS. Uma aparece com o símbolo a outra não !!!!!!!!!!!

Alguma coisa está com codificação diferente. Provavelmente a codificação do arquivo está em ISO. Isso você altera pelo editor de textos ou IDE

 

E o código que você disse para mostrar erros, não traz nada !!!! No php.ini já está configurado para On para mostrar os erros....

Você deve estar mexendo no arquivo php.ini errado. No phpinfo() aparece o caminho do php.ini carregado. Talvez você possua mais ou um e está mexendo em um antigo

 

Também lembre-se de reiniciar o servidor sempre que alterar algo no php.ini

 

 

Você pode testar no servidor nativo do PHP. Pode ajudar a achar o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Toda vez que eu altero algo no php.ini eu reinicio o ISS....

 

A única coisa que ví no Php.ini foi isso:

 

Configuration File (php.ini) Path C:\Windows Loaded Configuration File C:\php\php.ini

Questão do caracter estranho resolvido Beraldo.

 

Na verdade, ele estava no código fonte como &calcutelbuns então não resolvia. Deletei e digitei correto. Confesso que não sei porque ele estava desta maneira.... Mas foi bobeirinha.... Resolvido.

 

Agora só tem a questão que a página que lê o banco de dados não carrega nada.....


A questão do caracter estranho resolvido Beraldo.

 

A única questão são as páginas que leem o banco de dados carrega tudo em branco....

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

ini_set( 'display_errors', true );

error_reporting( E_ALL );

require_once 'database/mysql.php';
$db = new Mysql;
@header( 'Content-Type: text/html; charset=UTF-8' );
?>


<script src="js/jquery.min.js"></script>
<link rel="stylesheet" href="css/gallery.css" type="text/css"/>
<link rel="stylesheet" href="js/fancy/jquery.fancybox.css?v=2.1.0" media="screen" type="text/css"/>
<script src="js/fancy/jquery.fancybox.js?v=2.1.0" type="text/javascript"></script>
<script src="js/fancy/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>
<style>
.paginacao li{display:inline-block;padding:4px;}
.paginacao li a {display:inline-block;padding:4px;text-decoration:none;color:#333;}
.paginacao .current{color:red;}
</style>

<?php
$page = 0;
$perpage = 12; //quantidade de fotos por página
$current = 1;
$link = '';
if ( isset( $_GET['page'] ) )
{
$current = $_GET['page'];
$page = $perpage * $_GET['page'] - $perpage;
if ( $_GET['page'] == 1 )
{
$page = 0;
}
}

if ( isset( $_GET['id'] ) )
{
$album_id = $_GET['id'];
$db->query( "select * from albuns join fotos on(album_id = foto_album) where foto_album = $album_id order by foto_pos asc" )->fetchAll();
$total = $db->rows;
if ( $total > $perpage )
{
$link = "<ul class=\"paginacao\" style=\"float:left; width:99%;\">\n";
$prox = "javascript:;";
$ant = "javascript:;";
if ( $current >= 2 )
{
$ant = "album.php?id=$album_id&page=" . ($current - 1);
}
if ( $current >= 1 && $current < ($total / $perpage))
{
$prox = "album.php?id=$album_id&page=" . ($current + 1);
}
$link .= '<li><a href="' . $ant . '" title="Anterior">Ant</a></li>';
$from = round( $total / $perpage ) ;
if($from == 1){$from++;}
for ( $i = 1; $i <= $from; $i++ )
{
if ( $current == $i )
{
$link .= "<li><a class=\"current\" href=\"album.php?id=$album_id&page=$i\"><b>$i</b></a></li>\n";
}
else
{
$link .= "<li><a href=\"album.php?id=$album_id&page=$i\"><b>$i</b></a></li>\n";
}
}
$link .= '<li><a href="' . $prox . '" title="Próxima">Prox</a></li>';
$link .= "</ul>\n";
}


$db->query( "select * from albuns join fotos on(album_id = foto_album) where foto_album = $album_id order by foto_pos asc LIMIT $page,$perpage" )->fetchAll();
if ( $db->rows >= 1 )
{
$album_name = $db->data[0]['album_name'];

echo "<h1>" . $album_name . "</h1>\n";
echo "<a href=\"album.php\" class=\"back\"><img src=\"images/left.png\"/> Voltar</a>";

foreach ( $db->data as $fotos )
{
$f = ( object ) $fotos;
$d1 = strtotime( date( 'Y-m-d' ) ) ;
$d2 = strtotime( "$f->foto_data" );
$d3 = round( ($d1 - $d2) / 86400 );
$data = $d3;
?>
<title>Xande Tatuagem</title><div class="box-detail" id="<?= $f->foto_id ?>">
<div class="box-inner box-color">
<a class="rel" data-fancybox-group="gallery" href="fotos/<?= $f->foto_url ?>" caption="<?= utf8_decode( $f->foto_caption ) ?>">

<img src="fotos/<?= $f->foto_url ?>" />

<div class="box-inner-fx">
<h2><?= utf8_decode( $f->foto_caption ) ?></h2>
<span>Ampliar</span>
</div>
</a>
</div>
<div class="box-bottom">
<?php
if ( $f->foto_info != "" )
{
?>
<div class="box-bottom-left"><?= utf8_decode( $f->foto_info ) ?></div>
<div class="box-bottom-right"><?= $data ?> dia(s) atrás</div>
<?php
}
else
{
?>
<div class="box-bottom-right"><?= $data ?> dia(s) atrás</div>
<?php
}
?>
</div>
</div>
<?php

}
echo $link;
}
}
else
{
//echo "<h1> Selecione um Álbum xxx</h1> <br />\n";
$db->query( "select * from albuns order by album_name asc" )->fetchAll();
//echo $db->rows;
if ( $db->rows >= 1 )
{

echo "<h1> Selecione um Álbum</h1> <br />\n";
//echo $db->rows;

$albuns = $db->data;
foreach ( $albuns as $album )
{
$a = ( object ) $album;
$db->query( "select * from fotos where foto_album = $a->album_id order by foto_pos asc" )->fetchAll();
if ( $db->rows >= 1 )
{

$f = ( object ) $db->data[0];
?>
<div class="box-detail box-alb" id="<?= $a->album_id ?>">
<div class="box-inner-alb">
<a href="album.php?id=<?= $a->album_id ?>" caption="<?= $a->album_name ?>">

<img src="fotos/<?= $f->foto_url ?>" />

<div class="box-inner-fx">
<h2><?= $a->album_name ?></h2>
</div>
</a>
</div>
<div class="box-bottom">
<div class="box-bottom-right-photo"><?= $db->rows ?> foto(s)</div>
</div>
</div>
<?php
}
}
}
else
{
echo "<h1>Não existe Álbum !</h1> <br />\n";
}
}
?>
<script type="text/javascript">
$(document).ready(function(){
$('.box-alb').find('.box-inner-fx').css('background','url()').fadeIn(1000);

$('.box-inner').hover(
function(){
$(this).find('.box-inner-fx').slideDown();
},
function(){
$(this).find('.box-inner-fx').slideUp();
})
window.onload = function()
{

$(".rel").fancybox({
openEffect : 'elastic',
openSpeed : 150,
closeEffect : 'elastic',
closeSpeed : 350,
arrows: true,
helpers : {
title : {
type : 'float'//float, over, outside,inside
}}
});
}
})
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como mostrado neste tópico, você deve, após executar a query, verificar se retornou algum erro, antes de usar fetch().

 

Não sei qual é essa classe "Mysql", mas é provále que ela tenha uma função para exibir o erro (usando mysql_error ou mysqli_error)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha Beraldo....

Não está trazendo nada em tela, nada !!!!

 

o mysql.php é o que está abaixo:

 

<?php
Class mysql
{
public $query;
public $data;
public $result;
public $rows;
protected $config;
protected $host;
protected $port;
protected $user;
protected $pass;
protected $dbname;
protected $con;
public function __construct()
{
try
{
#array com dados do banco
include 'database.conf.php';
global $databases;
$this->config = $databases['local'];
# Recupera os dados de conexao do config
$this->dbname = $this->config['dbname'];
$this->host = $this->config['host'];
$this->port = $this->config['port'];
$this->user = $this->config['user'];
$this->pass = $this->config['password'];
# instancia e retorna objeto
$this->con = @mysql_connect( "$this->host", "$this->user", "$this->pass" );
@mysql_select_db( "$this->dbname" );
if ( !$this->con )
{
throw new Exception( "Falha na conexão MySql com o banco [$this->dbname] em database.conf.php" );
}
else
{
return $this->con;
}
}
catch ( Exception $e )
{
echo $e->getMessage();
exit;
}
return $this;
}
public function query( $query = '' )
{
try
{
if ( $query == '' )
{
throw new Exception( 'mysql query: A query deve ser informada como parâmetro do método.' );
}
else
{
$this->query = $query;
$this->result = mysql_query( $this->query );
}
}
catch ( Exception $e )
{
echo $e->getMessage();
exit;
}
return $this;
}
public function fetchAll()
{
$this->data = "";
$this->rows = 0;
while ( $row = @mysql_fetch_array( $this->result, MYSQL_ASSOC ) )
{
$this->data[] = $row;
}
if ( isset( $this->data[0] ) )
{
$this->rows = count( $this->data );
}
return $this->data;
}
public function rowCount()
{
return @mysql_affected_rows();
}
public function limit( $limit, $offset )
{
return "LIMIT " . ( int ) $limit . "," . ( int ) $offset;
}
}

Beraldo, olha, deve ser algo sim entre a versão de MySQL com PHP, porque estou nas atuais e acontece isso....

Nos servidores de hospedagem, não acontece e eu sei que as versões são diferentes.

Assim como desde o começo eu falei para você que eu trocando as versões de MySQL e PHP ora ia uma coisa ora não ia....

 

Eu sei que alguns servidores utilizam o MySQL 5.1.56 e o PHP 5.3.29 e eu fiz isso tbém, mas deu alguns conflitos.

 

Não sei se é por conta deste IIS 7.5, enfim, não sei.... MAS SEI QUE É ALGO EM RELAÇÃO AO PHP E MYSQL SIM, PORQUE SENÃO NÃO ACONTECIA AS COISAS QUE FALEI PARA VOCÊ E NEM FUNCIONAVA EM OUTROS HOSTS.

 

NÃO É POSSÍVEL QUE NÃO EXISTA UMA SOLUÇÃO, LUZ PARA ISSO....


Olha só:

 

Em uma página, a index.php, eu tenho logo no começo:

 

<?php
require_once 'admin/database/mysql.php';
$db1 = new Mysql;
$db2 = new Mysql;
?>
E 2 simples consulta:
<?php
$db1 = mysql_query("select * from fotos f join albuns a on f.foto_album = a.album_id where a.album_name like '%Slides%' order by foto_url") or die( mysql_error() );
while($res1_img = mysql_fetch_array($db1)){
$imagem1 = $res1_img['foto_url'];
$capt1 = $res1_img['foto_caption'];
$type1 = $res1_img['album_name'];
$id1_img = $res1_img['foto_id'];
?>
<li><img src="admin/fotos/<?php echo $imagem1; ?>"></li>
<?php } ?>
<?php
$db2 = mysql_query("select * from fotos f join albuns a on f.foto_album = a.album_id where a.album_name like '%Tatuagens%' order by foto_url");
while($res2_img = mysql_fetch_array($db2)){
$imagem2 = $res2_img['foto_url'];
$capt2 = $res2_img['foto_caption'];
$type2 = $res2_img['album_name'];
$id2_img = $res2_img['foto_id'];
?>
<div class="gal1">
<div class="photo1"><a href="admin/fotos/<?php echo $imagem2; ?>" rel="prettyPhoto[pp_gal1]" title="<?php echo $capt2; ?>"><img width="160" height="96" src="admin/fotos/<?php echo $imagem2; ?>"></a></div>
<p class="txt"><?php echo $capt2; ?></p>
</div>
<?php } ?>
Se eu tirar essas 3 partes PHP, o arquivo carrega normalmente no localhost/site
Se eu deixar, ele aparece tudo em branco !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mysql.php é o que está abaixo:

Tem "@" pra todo lado! Assim não vai mostrar erro mesmo.

Veja: http://rberaldo.com.br/boas-praticas-programacao-php/#arroba

 

 

Beraldo, olha, deve ser algo sim entre a versão de MySQL com PHP, porque estou nas atuais e acontece isso....

Nos servidores de hospedagem, não acontece e eu sei que as versões são diferentes.

Insisto que não é problema con versão. É problema com configuração.

As configurações em servidores tendem a ser mais tolerantes, permitindo "<?" em vez de "<?php" por exemplo e ocultando erros. A configuração padrão do PHP não é assim.

 

 

Não sei se é por conta deste IIS 7.5, enfim, não sei.... MAS SEI QUE É ALGO EM RELAÇÃO AO PHP E MYSQL SIM, PORQUE SENÃO NÃO ACONTECIA AS COISAS QUE FALEI PARA VOCÊ E NEM FUNCIONAVA EM OUTROS HOSTS.

Foi por isso que sugeri, mais de uma vez, a testar no servidor nativo do PHP...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz Beraldo, sinceramente, nem sabia disso....

 

Tirei os 4 @ que tinha no arquivo e agora apareceu:

 

PHP Fatal error: Call to undefined function mysql_connect() in C:\inetpub\wwwroot\xandetatuagem\admin\database\mysql.php on line 35

 

Fui na linha no arquivo e olha:

 

$this->con = mysql_connect( "$this->host", "$this->user", "$this->pass" );

 

É algo na autenticação com o servidor !?

 

Estou passando os dados corretos !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo..... Resolvi !!!!

Na verdade em partes..... Eu coloquei o PHP 5.4 e agora vai normal, beleza !!!!!

 

Mas, um detalhe.... Em uma página eu utilizo o Uploadify, eu seleciono o arquivo e mando fazer, mas ele não faz nada !!!!

 

O que pode ser !?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP Fatal error: Call to undefined function mysql_connect() in C:\inetpub\wwwroot\xandetatuagem\admin\database\mysql.php on line 35

 

Fui na linha no arquivo e olha:

 

$this->con = mysql_connect( "$this->host", "$this->user", "$this->pass" );

 

É algo na autenticação com o servidor !?

Não.

Isso ocorre quando a função não existe. Ou seja, a extensão MySQL não estava habilitada.

 

 

 

Mas, um detalhe.... Em uma página eu utilizo o Uploadify, eu seleciono o arquivo e mando fazer, mas ele não faz nada !!!!

 

O que pode ser !?

Tem que olhar os logs. Se estiver usando Ajax, veja o console javascript do navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que já consegui Beraldo....

 

Por favor, só para confirmar.... Todas as minhas páginas, tanto php ou html, eu tenho que setar o charset=UTF-8 !? É isso !? E assim, no meu MySQL, eu criar os Bancos de Dados e Tabelas com UTF-8 e UTF_general_ci é isso mesmo !?

Se sim, eu fazendo isso localmente ( localhost ) na hora de eu subir para os servidores de hospedagem, não vai dar conflito né Beraldo !?

 

Outra coisa.... Consegui fazer o upload e gravar no Banco.... Mas um detalhe. Arquivos menores que 100kb faz, maiores que isso não....

 

Onde eu acerto isso !? É no IIS !? É no PHP !? Pois no Php não encontrei....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.