הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שגיאת עם פונקציית COPY של PHP (https://hosts.co.il/forums/showthread.php?t=93381)

Noam 12-11-11 16:07

שגיאת עם פונקציית COPY של PHP
 
שלום

במערכת אצלי אני מבצע שימוש עם הפונצקיה copy.
בעקבות עידכון גירסת PHP ל 5.2.17 אני מקבל את השגיאה:
קוד:

Warning: copy() [function.copy]: Unable to access http://www.www.com in /home/www/domains/www/public_html/ajax.php on line 962
חיפשתי ב PHP.ini את השם של הפונקציה אבל אני לא מצליח למצוא משהו שקשור.

תודה מראש

Itay 12-11-11 16:13

השגיאה אומרת שהפונקציה לא מצליחה לגשת לכתובת מסויימת - בא לך להראות את הקוד כדי שנוכל להבין מה הבעיה?

Noam 12-11-11 16:25

הכתובת קיימת בדקתי.
הבעיה הגיעה לאחר עידכון גירסה, בקוד לא שיניתי דבר.
השימוש שלי בפונקציה הוא כזה:
PHP קוד:

copy(http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif); 


Itay 12-11-11 17:28

דבר ראשון - זה צריך להיות בתוך מרכאות, למרות שאני מאמין שזה ככה בקוד כי אחרת השגיאה היתה שונה

דבר שני - תבדוק בהגדרות PHP (אפשר להריץ phpinfo() ) על מה מוגדר "allow_url_fopen"
אם הוא מוגדר על on, תוודא שהכתובת שאתה מכניס היא בלי רווחים, אם כן - צריך להחליף את הרווחים עם %20

Noam 13-11-11 02:05

בקוד זה עם מרכאות כן.
ו allow_url_fopen מוגדר על ON כבר.

daNN 13-11-11 10:00

תבדוק אם יש רווח בשם של הקובץ..
אם היית מראה את הקוד המקורי אולי היינו יכולים לדעת אם זו הבעיה
מגירסא 5.2.13 ומעלה
רווח בשם של הקובץ לא מתקבל.

MyDns 13-11-11 11:20

ציטוט:

copy("http://www.site1.co.il/uploads/pic.jpg", "/home/site/domains/site.co.il/public_html/uploads/pic.gif");

בדוק הראשות לתיקיית uploads 777

השתמש ב error_reporting לקבלת שגיאה מלאה
ציטוט:

error_reporting(-1);




Noam 16-11-11 21:37

ציטוט:

נכתב במקור על ידי MyDns (פרסם 824799)

בדוק הראשות לתיקיית uploads 777

השתמש ב error_reporting לקבלת שגיאה מלאה




כתוב לי את השגיאה:

Parse error: syntax error, unexpected T_STRING in /home/site/domains/site.co.il/public_html/ajax.php on line 962

Itay 16-11-11 22:54

אז אולי תראה לנו מה יש בשורה 962 במקום שננחש?

Noam 17-11-11 23:51

הנה:

PHP קוד:

copy($site->post['opSmallPic'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y); 

שזה משהו כזה:

PHP קוד:

copy(http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif); 


איציק ברבי 18-11-11 00:26

ציטוט:

נכתב במקור על ידי Noam (פרסם 825271)
הנה:

PHP קוד:

copy($site->post['opSmallPic'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y); 

שזה משהו כזה:

PHP קוד:

copy(http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif); 


אני לא מבין אותך אתה יודע PHP?

PHP קוד:

copy($site->post['opSmallPic'].$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y); 

PHP קוד:

copy("http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif"); 


MyDns 18-11-11 00:52

ציטוט:

נכתב במקור על ידי Noam (פרסם 825271)
הנה:

PHP קוד:

copy($site->post['opSmallPic'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y); 

שזה משהו כזה:

PHP קוד:

copy(http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif); 


השורה השנייה. שמתה "" ?

Tomer 18-11-11 00:53

ציטוט:

נכתב במקור על ידי Echo (פרסם 825274)
אני לא מבין אותך אתה יודע PHP?

PHP קוד:

copy($site->post['opSmallPic'].$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y); 

PHP קוד:

copy("http://www.site1.co.il/uploads/pic.jpg,/home/site/domains/site.co.il/public_html/uploads/pic.gif"); 


אני לא מבין אותך. אתה יודע PHP? בבקשה אל תעליב אם התשובה שלך לא תורמת ויותר מזיקה.

הורדת את הפסיק אחרי ה opSmallPic (שינית לנקודה) - הפונקציה copy מקבלת 2 ארגומנטים, אתה שולח 1. זה לא יעבוד.

אני לא רואה בעיה בקוד של ה copy שהבחור (פותח האשכול) פרסם. Noam, אתה יכול להציג כמה שורות מעל ומתחת לשורת ה copy?

MyDns, את השורה השנייה הוא רשם כדי להדגים איך זה יוצא. הוא לא צריך להוסיף ידנית את המרכאות, הן לא נחוצות...

Noam 18-11-11 02:05

הנה הקוד המלא:

PHP קוד:

if($site->files['opSmallPic']['tmp_name'] != ""){
    @
unlink($site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsMoviesPlace'].$picture['opSmallPic'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsMoviesPlace'].$download['opSmallPic']);
    
move_uploaded_file($site->files['opSmallPic']['tmp_name'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y);
    
$this->makeSmallerImage($site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y,$y);
    
$opSmallPic $site->post['opLinkName'].".".$y;
}else{
    if(
$site->Functions->file_exists($site->post['opSmallPic'])){
        if(
$site->post['opSmallPic'] != $site->conf['systemLink'].$site->conf['uploadPlace'].$site->conf['smallImgsMoviesPlace'].$download['opSmallPic']){
            @
unlink($site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsMoviesPlace'].$download['opSmallPic']);
            
copy($site->post['opSmallPic'],$site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y);
            
$this->makeSmallerImage($site->conf['systemPlace'].$site->conf['uploadPlace'].$site->conf['smallImgsDownloadsPlace'].$site->post['opLinkName'].".".$y,$y);
        }
        
$opSmallPic $site->post['opLinkName'].".".$y;
    }else{
        die(
"התמונה הקטנה ששלחת לא קיימת".$site->post['opSmallPic']);
    }



חשוב לזכור שהקוד הזה עבד, ובגלל שידרוג לגירסה PHP 5.2.17 נוצרה השגיאה.

תודה לעוזרים.

איציק ברבי 18-11-11 07:09

להבא תפרט אני אסתכל על זה יותר לעומק.

אדיר 18-11-11 09:37

אם המשתנים מוגדרים כמו שצריך לאחר שכמובן בדקת את זה (תדפיס אותם ותוודא את זה, תראה שהנתיב מופיע כמו שצריך),
ככה"נ מדובר בהגדרה שמונעת מהפונקציה לתפקד, אתה מוזמן לשלוח לי לפרטי פלט של phpinfo() ואבדוק מה קורה שם.

(אפשר כמובן גם כאן, בכל מקרה אני ממליץ שלא)

Noam 18-11-11 11:40

סוף סוף הבעיה נפתרה.
תודה לכולם, השגיאה הייתה בגלל SAFE MODE.


כל הזמנים הם GMT +2. הזמן כעת הוא 05:08.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ