调试php脚本


Debugging a php script

我使用textpad创建php脚本。现在有什么我可以使用textpad,或者有一种方法来调试textpad。我是我的一些代码回声出来,我仍然没有得到我想要我的页面做的结果。所以我认为我的代码需要一些调试。我将把代码贴在下面,我相信你们中的许多人也会同意它需要调试。我知道很多人可能会说我不应该使用我正在使用的东西,但这就是我被教导使用的。

    <?php
function dbConnect(){
// Connect to the database
$hostname="localhost";
 $database="tblFile";
 $mysql_login="*****";
 $mysql_password="*****";
 if(!($db=mysql_connect($hostname, $mysql_login, $mysql_password))){
    echo"error on connect";
 }
 else{
    if(!(mysql_select_db($database,$db))){
        echo mysql_error();
        echo "<br />error on database connection. Check your settings.";
    }
    else{
                echo "I have successfully made a connection to my database and everything
 is working as it should.";
        }


}
$aryImages=array("image/jpeg","image/png");
$aryDocs=array("application/msword","application/pdf","video/x-msvideo");
$filename=filenameSafe($_FILES['upload']['name']);
$fileType=$_FILES["upload"]["type"];
if (in_array($_FILES["upload"]["type"],$aryImages)){
    createThumb($fileType,$_FILES['upload']['tmp_name'],$filename,100,100);
}
elseif (in_array($_FILES["upload"]["type"],$aryDocs)){
    move_uploaded_file($_FILES['upload']['tmp_name'],
"/home/valerie2/public_html/elinkswap/snorris/upload/".$filename);
    $aryColumns=array("sessionID"=>$curSess,"fileName"=>$filename,"fileType"=>$fileType,"thumbFileName"=>$thumbFilename,"dateCreated"=>date('Y-m-d H:i:s'));
    dbInsert($filename,$aryColumns,$_FILES["upload"]["type"]);
}

    else{
    echo "File Uploaded";
  }
function createThumb($type,$tmpname,$filename,$new_w,$new_h){
    $thumbFilename="tmb-".$filename;
    echo $type;
    echo "<br>".$tmpname;
    if (is_numeric(strpos($type,"jpeg"))){
        $src_img=imagecreatefromjpeg($tmpname);
    }
    if (is_numeric(strpos($type,"png"))){
        $src_img=imagecreatefrompng($tmpname);
    }
    $old_x=imageSX($src_img);
    $old_y=imageSY($src_img);
    if ($old_x > $old_y) {
        $thumb_w=$new_w;
        $thumb_h=$old_y*($new_h/$old_x);
    }
    if ($old_x < $old_y) {
        $thumb_w=$old_x*($new_w/$old_y);
        $thumb_h=$new_h;
    }
    if ($old_x == $old_y) {
        $thumb_w=$new_w;
        $thumb_h=$new_h;
    }
    $dst_img=imagecreatetruecolor($thumb_w,$thumb_h);
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
    if (is_numeric(strpos($type,"jpeg"))){
        imagejpeg($dst_img,"/home/valerie2/public_html/elinkswap/imageupload/upload/".$thumbFilename);
        imagejpeg($src_img,"/home/valerie2/public_html/elinkswap/imageupload/upload/".$filename);
    }
    if (is_numeric(strpos($type,"png"))){
        imagepng($dst_img,"/home/valerie2/public_html/elinkswap/imageupload/upload/".$thumbFilename);
        imagepng($src_img,"/home/valerie2/public_html/elinkswap/imageupload/upload/".$filename);
    }
    imagedestroy($dst_img);
    imagedestroy($src_img);
    dbInsert($filename,$thumbFilename,$type);
}
function filenameSafe($filename)
{
    // Lower case
    $filename = strtolower($filename);
    // get extension
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    // Replace spaces with a ’_’
    $filename = str_replace(" ", "_", $filename);
    // Replace non-alphanumerics (except underscores)
    $filename = preg_replace('/'W/', '', $filename);
    // append the timestamp
    $filename = $filename . time();
    // create an md5 hash
    $result = md5($filename);
    // ensure the string is safe for the db query
    $result = mysql_real_escape_string($result);
    dbConnect();
    $SQL="SELECT fileId FROM tblFile WHERE fileName='".$result.".$ext'";
    $rs = mysql_query($SQL);
    if (mysql_num_rows($rs) > 0) {
        $result = str_replace(".$ext", time(), $result);
        $result = "$result.$ext";
    }
    return $result;
}

function dbInsert($filename,$thumbFilename,$type){
    dbConnect();
    $SQL="INSERT Into tblFile (fileName,thumbFileName,fileType) values('".$filename."','".$thumbFilename."','".$type."')";
    //echo $SQL;
    mysql_query($SQL);

}

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>File Upload</title>
<link href="styles.css" type="text/css" rel="stylesheet" />
</head>
<body>

<form enctype="multipart/form-data" action="upload.php" method="post">
Select File: <input type="file" name="upload">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
<input name="Submit" type="submit" value="Upload">
</form>
</html>

我已经查了一下自己,看看是否有调试的textpad,但我什么也没得到。

在非PHP- ide上调试PHP最简单的方法是建立一个外部日志文件。

你可以在。htaccess中指定类似

的内容
php_value display_errors 1
php_value error_reporting 2147483647
php_value error_log /var/log/php/php_error.log

确保这个文件在你的webserver/php进程中是可写的。在代码中,您可以简单地使用error_log方法将内容记录到文件中。

恐怕您必须切换到"更大"的IDE才能进行一些认真的调试。您必须使用Xdebug尝试EclipseNetBeans。如果你在Google上搜索一下,你会发现很多关于使用eclipse php xdebugnetbeans php xdebug设置调试环境的教程。

如果你需要一些非常非常简单的东西,但比每次调用一个echovar_dump更好,你应该尝试FirePHP与FirePHP扩展的Firefox。

只是通过一个简单的复制粘贴在编辑器与语法高亮,我看到你写的所有函数都在dbConnect函数,这看起来不正常。

同样,如果你缩进你的代码,它会更容易阅读,所以发现问题。如果你的服务器有错误报告和错误显示,你应该得到一些消息