警告:strpos()期望参数1是字符串,资源

时间:2014-02-20 08:08:36

标签: php strpos

我最近将PHP站点迁移到了我的服务器,迁移后我收到此错误消息。由于我不熟悉PHP,我真的很感激任何帮助。感谢。

  

警告:strpos()期望参数1为字符串,资源在   ... / public_html / store /product_list.php第121行

第121行如下......

$exists = (strpos($handle, "Resource id") !== false) ? true : false;

以下是页面顶部相关的其余代码。

<?php session_start();
include_once("../includes/define.inc.php");
include("../includes/common.php");
include("../includes/mysql_functions.php");

if( isset( $_GET['category'] ) )
{
    $exists = checkIfExists("aw_category", "aw_category_urlalias='". $_GET['category']."'", "aw_category_id");
    if( !$exists )
    {
        header("Location: " . PRODUCT_LIST );
    }
}


$get_category = ( isset( $_GET['category'] ) ) ? $_GET['category'] : "";
$category_id = ( $get_category == "" ) ? "" : getCategoryIDByAlias( $get_category );
$get_page = (isset($_GET['page']) ) ? $_GET['page'] : 0;


/*category menu*/
$qry_cat = "SELECT aw_category_urlalias, aw_category_id,aw_category_name,aw_category_order,aw_category_status FROM aw_category WHERE aw_category_status = 1 ORDER BY aw_category_order asc";
$result_cat = Query($qry_cat);

/*product*/
$qry_pro = "SELECT *
            FROM aw_product
            INNER JOIN aw_category
            ON aw_product.aw_product_category = aw_category.aw_category_id
            INNER JOIN aw_image
            ON aw_product.aw_product_id = aw_image.aw_img_prodid
            WHERE aw_product.aw_product_status = 1";

if( $category_id == "" ) 
{ //Feature Product
    $qry_pro .= " AND aw_product.aw_product_category = 1";
} else {
    $qry_pro .= " AND aw_product.aw_product_category = ".$category_id."";
}

$qry_pro .= " GROUP BY aw_product.aw_product_id 
            ORDER BY aw_product.aw_product_priority desc,aw_product.aw_product_date desc";

if( $get_category=="" ) 
{ //Feature Product
    $qry_pro .= " LIMIT 6";
}

$result_pro = Query( $qry_pro );
//$row_pro = mysql_fetch_array($result_pro);
$result_pro2 = Query( $qry_pro );

if( !$get_category == "" ) 
{
/*Pagination*/
$num_per_page= 12;
$num_rows = mysql_num_rows($result_pro);

$num_pages = ceil($num_rows/$num_per_page);
$nav = "";


$begin = $get_page * $num_per_page;

$qry_pro .= " LIMIT " . $begin . ",12";
$result_pro = Query( $qry_pro );
$row_pro = mysql_fetch_array($result_pro);

if( $get_page > 0 ) 
{
    $nav ="<a class=\"page_a\" href=\"".PRODUCT_LIST."?category=".$get_category."&page=".( $get_page-1 )."\">&laquo; Previous</a> | ";
}

for($p=0;$p<$num_pages;$p++) 
{
    if($get_page == $p)
        $nav .="<a class=\"page_a\" style='text-decoration:underline' href=\"".PRODUCT_LIST."?category=".$get_category."&page=".$p."\">".($p+1)."</a> | ";
    else
        $nav .="<a class=\"page_a\" href=\"".PRODUCT_LIST."?category=".$get_category."&page=".$p."\">".($p+1)."</a> | ";
}
if($get_page<$num_pages-1)
{
    $nav .="<a class=\"page_a\" href=\"".PRODUCT_LIST."?category=".$get_category."&page=".($get_page+1)."\"> Next &raquo;</a>";
}
}//-------
/*news*/
$qry_news = "SELECT aw_news_title FROM aw_news ORDER BY aw_news_date desc LIMIT 8";
$result_news = Query($qry_news);




function getCategoryIDByAlias( $alias )
{
    $query = "SELECT aw_category_id FROM aw_category WHERE aw_category_urlalias='".$alias."'";
    $rs = Query( $query );
    $row = mysql_fetch_array( $rs );
    return $row['aw_category_id'];
}

function checkIfThumbExists( $thumb )
{

    //$exists = ( file_exists( $img_src_thumb ) ) ? true : false;
    //echo $exists;
    //$exists = ( is_file( $img_src_thumb )  ) ? true : false;
    //echo $exists;


    //$AgetHeaders = @get_headers( $img_src_thumb );
    //$exists = ( preg_match( "|200|", $AgetHeaders[0] ) ) ? true : false;
    //echo $exists;


    //$header_response = get_headers($img_src_thumb, 1);
    //$exists = ( strpos( $header_response[0], "404" ) !== false ) ? false : true;; 
    //echo $exists;


    $handle = @fopen($thumb, 'r');
    $exists = (strpos($handle, "Resource id") !== false) ? true : false;

    if( $exists )
    {
        $size = getimagesize( $thumb );

        if( $size[3] == 'width="214" height="214"')
        {
            $exists = true;
        } else {
            $exists = false;
        }

    }
    return $exists;
}


?>

6 个答案:

答案 0 :(得分:1)

尝试使用以下内容替换第121行:

$handle = @file_get_contents($thumb);

答案 1 :(得分:0)

$handle = @fopen($thumb, 'r');

$ handle not is string

答案 2 :(得分:0)

错误很明显。阅读stropos()

手册

需要在参数中使用字符串,但在您的情况下,您在那里设置一个源($handle = @fopen($thumb, 'r');)和一个字符串(“资源ID”)

file_get_contents为例。

答案 3 :(得分:0)

fopen返回一个资源,strpos期望第一个参数为字符串。

您可以改用file_get_contents,但是您确定要检查图像的二进制数据吗?

$data = file_get_contents($thumb);

答案 4 :(得分:0)

我不知道你想用这条线做什么,但是如果你想要存在或不存在该文件,我建议你使用本机PHP函数 file_exists ,这给出了你有机会检查文件是否存在:

$exists = file_exists($thumb)

这是PHP参考。

http://es1.php.net/manual/es/function.file-exists.php

答案 5 :(得分:-2)

正如在其他答案中提到的那样,你给strpos一个文件句柄或'资源',这是错误的。

但是,看起来你想要测试的是文件是否存在所以我只想这样做:

$handle = @fopen($thumb, 'r');
if($handle)
{
   // File exists
}
else
{
   // File doesn't exist
}

如果文件可以打开,fopen()将返回指针(资源),否则返回false。

file_get_contents()看起来是错误的选项,因为看起来你正试图打开并成像,所以你为什么要在二进制文件中搜索一个字符串。