PHP5: Dış işlevlerini çağıran ve günlük hataları

5 Cevap php

Ben PHP acı yeniyim, ve benim yerel sitede phpBB kurmak için çalışıyordu. Ben bir stok Debian apache2 ve php5 yüklemesi var. PhpBB yükleyici veritabanına bağlı ve hiçbir sorun ile tüm tabloları oluşturulmuş, ince koştu. Ben giriş sayfasını açmaya çalıştım ama, ben bir 0-byte tepki var.

Biraz kazma, () mysql_pconnect çağrısı geçmişte bunu yapmak hiç olduğunu gösterdi. Php ikili sadece hata veya mesaj sonlandırılıyor. Hiç bir şey. Ben aşağıdaki kod çalıştıran çalıştı:

<?php
$id = @mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

ve "id =" string yazdırır asla. Sadece hiçbir şey yapmaz. Ben nerede hata ne olduğunu görmek için bakmak bilmiyorum, ya da ne hiç oluyor. Ben yükledim Tüm armut kullanarak "mysql" belki de ... Ben başka bir şey eksik?

Bu yerde bir yol sorunu olmak var. Mysql uzantısı en güzel inşa edilmiştir

/usr/lib/php5/20060613+lfs/mysql.so

Answer:

Jishi: "@" operatörü hata iletileri de dahil olmak üzere, çıkış bastırır beni bilgilendirdi (@ echo off, herkes?)

tomhaigh: uzantıları açıkça php.ini dosyasında etkin olmalıdır. Satırını ekledikten sonra "extension = mysql.so" php.ini için, aşağıdaki kod iyi çalışır:

% cat d.php 
<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>
% php -c /etc/php5/apache2/php.ini  d.php
id=Resource id #4

JOY!

5 Cevap

bunu deneyin:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

ve tepkisi ne olduğunu görmek

edit

Mysql modülü yüklü veya etkin değil gibi Yorumlarınız Gönderen görünüyor. Php.ini dosyasına bir göz ve benzeri bir çizgi varsa görebiliyordu

extension=mysql.so

Bir virgül ile yorumladı ise, onu kaldırma ve apache yeniden başlatmayı deneyin

Sadece) mysql_pconnect (önünde bir @ kullanıyorsanız kaydetti. Yani bu durumda oldukça kötü bir fikir olduğunu, tüm hataları bastırır. Bu çıkarın ve muhtemelen çıktıyı göreceksiniz.

Aksi takdirde:

Php.ini kontrol debian için / etc/php5/apache2/php.ini olmalıdır.

Display_errors denilen bir hat için denetleyin (üretim-sistemi için önerilen, ancak hata ayıklama ve geliştirme sırasında kullanışlı değil) tarayıcınızda hata çıktısını istiyorsanız true olduğunu ayarlayabilirsiniz.

(Başka bir hata dosya phpBB-sitesi için belirtilen sürece) debian varsayılan olacağını apaches hata günlüğünde, için hataları oturum apache için log_errors'u belirtin:

/ Var/log/apache2/error.log

Kaldır Bu mysql_pconnect atma hata mesajları kısma bir "@".

Documentation

Ben bazen onu bulamıyorum bir işlev bulduğunda PHP bir 'kara delik' aşağı gidiş var.

Eğer mysql uzantısı doğru takıldığını doğrulamak miyim?

Böyle bir php sayfası oluşturarak bunu yapabilirsiniz:

<?php
phpinfo();
?>

Webroot kaydederek, ve sonra erişmek. Bu sunucu şu anda PHP modülleri açısından çalışıyor ne ilgili tüm bilgileri içermelidir.

I think you have no mysql extensions installed for your PHP. Since PHP5 I think it is a PECL extension. If you are working on windows, there should be a pecl.bat or something like this in your php directory. Just go there via console and enter

pecl download mysql

Beklendiği gibi sonra her şey çalışmalıdır.