Dir在使用imagepng PHP GD

时间:2016-04-14 02:30:06

标签: php codeigniter directory php-gd

将网络上传到服务器时出现了一个问题。在localhost中,它可以正常工作。

基本上我的功能是用图像更新图像,然后以新文件名(图像)存储。

PHP脚本:

        function updateimage()
    {


    //Try retriving data:
    $ip = $this->input->ip_address();
    $this->session->set_userdata("my_session_id", md5($ip));
    $ip = $this->session->userdata('my_session_id') ;




          $text1 = strtoupper ($this->input->post('text1'));
          $text2 = strtoupper ($this->input->post('text2'));
          $text3 = strtoupper ($this->input->post('text3'));


          $text1_align = $this->input->post('text1_align');
          $text2_align = $this->input->post('text2_align');
          $text3_align = $this->input->post('text3_align');



          $text1split = str_split($text1,1);
            $text2split = str_split($text2,1);
            $text3split = str_split($text3,1);            


          $image_tag = base_url().'images/tag.png';
          $image_A = base_url().'images/A.png';
          $image_B = base_url().'images/B.png';
          $image_C = base_url().'images/C.png';
          $image_D = base_url().'images/D.png';
          $image_E = base_url().'images/E.png';
          $image_F = base_url().'images/F.png';
          $image_G = base_url().'images/G.png';
          $image_H = base_url().'images/H.png';
          $image_I = base_url().'images/I.png';
          $image_J = base_url().'images/J.png';
          $image_K = base_url().'images/K.png';
          $image_L = base_url().'images/L.png';
          $image_M = base_url().'images/M.png';
          $image_N = base_url().'images/N.png';
          $image_O = base_url().'images/O.png';
          $image_P = base_url().'images/P.png';
          $image_Q = base_url().'images/Q.png';
          $image_R = base_url().'images/R.png';
          $image_S = base_url().'images/S.png';
          $image_T = base_url().'images/T.png';
          $image_U = base_url().'images/U.png';
          $image_V = base_url().'images/V.png';
          $image_W = base_url().'images/W.png';
          $image_X = base_url().'images/X.png';
          $image_Y = base_url().'images/Y.png';
          $image_Z = base_url().'images/Z.png';           

          $image_1 = imagecreatefrompng($image_tag);


            imagealphablending($image_1, true);
            imagesavealpha($image_1, true);

            $text1len = (strlen($text1)*16)/2;
            $counter2 = (157 - ($text1len))+strlen($text1);

            if ($text1_align == 'on') $counter = 70; else $counter = $counter2;



        if ($text1split) {
            foreach ($text1split as $text1)
            {
             if ($text1 == 'A') {
                  $image_2 = imagecreatefrompng($image_A);
                imagecopy($image_1, $image_2, $counter, 50, 0, 0, 16, 24);
           }else if ($text1 == 'B'){ 
               $image_3 = imagecreatefrompng($image_B);
               imagecopy($image_1, $image_3, $counter, 50, 0, 0, 16, 24);
           }else if ($text1 == 'C') {
              $image_4 = imagecreatefrompng($image_C); 
           imagecopy($image_1, $image_4, $counter, 50, 0, 0, 16, 24);
         } else if ($text1 == 'D') {
             $image_5 = imagecreatefrompng($image_D); 
             imagecopy($image_1, $image_5, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'E') {
             $image_6 = imagecreatefrompng($image_E); 
             imagecopy($image_1, $image_6, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'F') {
             $image_7 = imagecreatefrompng($image_F); 
             imagecopy($image_1, $image_7, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'G') {
             $image_8 = imagecreatefrompng($image_G); 
             imagecopy($image_1, $image_8, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'H')  {
             $image_9 = imagecreatefrompng($image_H); 
             imagecopy($image_1, $image_9, $counter, 50, 0, 0, 16, 24);
           }else if ($text1 == 'I') {
             $image_10 = imagecreatefrompng($image_I); 
              imagecopy($image_1, $image_10, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'J')  {
             $image_11 = imagecreatefrompng($image_J); 
             imagecopy($image_1, $image_11, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'K')  {
             $image_12 = imagecreatefrompng($image_K); 
             imagecopy($image_1, $image_12, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'L')  {
             $image_13 = imagecreatefrompng($image_L); 
             imagecopy($image_1, $image_13, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'M')  {
             $image_14 = imagecreatefrompng($image_M); 
             imagecopy($image_1, $image_14, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'N')  {
             $image_15 = imagecreatefrompng($image_N); 
             imagecopy($image_1, $image_15, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'O')  {
             $image_16 = imagecreatefrompng($image_O); 
             imagecopy($image_1, $image_16, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'P')  {
             $image_17 = imagecreatefrompng($image_P); 
             imagecopy($image_1, $image_17, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'Q')  {
             $image_18 = imagecreatefrompng($image_Q); 
             imagecopy($image_1, $image_18, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'R')  {
             $image_19 = imagecreatefrompng($image_R); 
             imagecopy($image_1, $image_19, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'S')  {
             $image_20 = imagecreatefrompng($image_S); 
             imagecopy($image_1, $image_20, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'T')  {
             $image_21 = imagecreatefrompng($image_T); 
             imagecopy($image_1, $image_21, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'U')  {
             $image_22 = imagecreatefrompng($image_U); 
             imagecopy($image_1, $image_22, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'V')  {
             $image_23 = imagecreatefrompng($image_V); 
             imagecopy($image_1, $image_23, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'W')  {
             $image_24 = imagecreatefrompng($image_W); 
             imagecopy($image_1, $image_24, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'X')  {
             $image_25 = imagecreatefrompng($image_X); 
             imagecopy($image_1, $image_25, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'Y')  {
             $image_26 = imagecreatefrompng($image_Y); 
             imagecopy($image_1, $image_26, $counter, 50, 0, 0, 16, 24);
         }else if ($text1 == 'Z')  {
             $image_27 = imagecreatefrompng($image_Z); 
             imagecopy($image_1, $image_27, $counter, 50, 0, 0, 16, 24);
         }  
             $counter = $counter+16;    
           }    
       }



            $text2len = (strlen($text2)*16)/2;
            $counter2 = (157 - ($text2len))+strlen($text2);

            if ($text2_align == 'on') $counter = 70; else $counter = $counter2;

          if ($text2split) { 
            foreach ($text2split as $text1)
            {
             if ($text1 == 'A') imagecopy($image_1, $image_2, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'B') imagecopy($image_1, $image_3, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'C') imagecopy($image_1, $image_4, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'D') imagecopy($image_1, $image_5, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'E') imagecopy($image_1, $image_6, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'F') imagecopy($image_1, $image_7, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'G') imagecopy($image_1, $image_8, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'H') imagecopy($image_1, $image_9, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'I') imagecopy($image_1, $image_10, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'J') imagecopy($image_1, $image_11, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'K') imagecopy($image_1, $image_12, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'L') imagecopy($image_1, $image_13, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'M') imagecopy($image_1, $image_14, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'N') imagecopy($image_1, $image_15, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'O') imagecopy($image_1, $image_16, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'P') imagecopy($image_1, $image_17, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'Q') imagecopy($image_1, $image_18, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'R') imagecopy($image_1, $image_19, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'S') imagecopy($image_1, $image_20, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'T') imagecopy($image_1, $image_21, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'U') imagecopy($image_1, $image_22, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'V') imagecopy($image_1, $image_23, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'W') imagecopy($image_1, $image_24, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'X') imagecopy($image_1, $image_25, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'Y') imagecopy($image_1, $image_26, $counter, 75, 0, 0, 16, 24);
             else if ($text1 == 'Z') imagecopy($image_1, $image_27, $counter, 75, 0, 0, 16, 24);

             $counter = $counter+16;    
           }    
        }


            $text3len = (strlen($text3)*16)/2;
            $counter2 = (157 - ($text3len))+strlen($text3);

            if ($text3_align == 'on') $counter = 70; else $counter = $counter2;

          if ($text3split) { 
            foreach ($text3split as $text1)
            {
             if ($text1 == 'A') imagecopy($image_1, $image_2, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'B') imagecopy($image_1, $image_3, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'C') imagecopy($image_1, $image_4, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'D') imagecopy($image_1, $image_5, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'E') imagecopy($image_1, $image_6, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'F') imagecopy($image_1, $image_7, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'G') imagecopy($image_1, $image_8, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'H') imagecopy($image_1, $image_9, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'I') imagecopy($image_1, $image_10, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'J') imagecopy($image_1, $image_11, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'K') imagecopy($image_1, $image_12, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'L') imagecopy($image_1, $image_13, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'M') imagecopy($image_1, $image_14, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'N') imagecopy($image_1, $image_15, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'O') imagecopy($image_1, $image_16, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'P') imagecopy($image_1, $image_17, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'Q') imagecopy($image_1, $image_18, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'R') imagecopy($image_1, $image_19, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'S') imagecopy($image_1, $image_20, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'T') imagecopy($image_1, $image_21, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'U') imagecopy($image_1, $image_22, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'V') imagecopy($image_1, $image_23, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'W') imagecopy($image_1, $image_24, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'X') imagecopy($image_1, $image_25, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'Y') imagecopy($image_1, $image_26, $counter, 100, 0, 0, 16, 24);
             else if ($text1 == 'Z') imagecopy($image_1, $image_27, $counter, 100, 0, 0, 16, 24);

             $counter = $counter+16;    
           }    
        }

                $path = $_SERVER['DOCUMENT_ROOT']."\simtag\images/".$ip."tag2.png";

echo "Dir: " . dirname($path) . "<br />"; 
echo "File: " . $path . "<br />"; 

$seperator = '<br>';// and this 

echo ( is_writable(dirname($path))?'DIR writeable':'dir Restricted' ) .  $seperator; 
if( ! file_exists($path) ) 
  die('File does not exist'); 

echo is_writable($path)?'File writeable':'File has insufficient perms'; 
die(); 

            $this->save_imagepng($image_1,$path); 
            //imagepng($image_1, $path);
                 imagedestroy($image_1);

            redirect('home');

    }

function save_imagepng($img,$fname)
{
  ob_start();// store output
  imagepng($img);// output to buffer
  file_put_contents($fname, ob_get_contents(), FILE_BINARY);// write buffer to file
  ob_end_clean();// clear and turn off buffer 
}

当它运行时没有发生任何事情,那么我检查文件夹是否可写,它就像这样

Dir: /home/kagasiac/public_html\simtag\images
File: /home/kagasiac/public_html\simtag\images/44801aed40d934e6b15c89a2363cc9abtag2.png
dir Restricted
File does not exist

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因此,人们不必阅读有关该问题的评论。解决方案是将基目录更改为从public_html开始并使用/

所以对于这个例子

$path = "/public_html/simtag/images/".$ip."tag2.png";

而不是

$path = $_SERVER['DOCUMENT_ROOT']."\simtag\images/".$ip."tag2.png";

这通常是由于服务器的限制。无法访问共享主机中的基本目录。