נפתר קוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה
-
@פיסטוק-פרווה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
בגירסת php 8.0 לא נתמך file_get_contents().
בתיעוד הרשמי דווקא כתוב שכן
אני בעצמי משתמש עם זה ב-PHP 8.2 -
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
וובהוסט לא מאפשרים שימוש ב- ;shell_exec()
רוב ככל שירותי אירוח אתרים לא מאפשרים את הפונקציה הזו מכיוון שהיא מאפשרת לעקוף את המגבלות שחברות האחסון מטילות על החשבון
-
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
אם כן, מה יכול להחליף את file_get_contents() ??
curl
<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); var_dump( $result['code'], $result['answer'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output ] ); }
-
-
הקוד הבא מכיל ניפוי שגיאות:
<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); var_dump( $result['code'], $result['answer'], $result['error'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output , 'error' => ( $error_msg ?? 'no errors' )] ); }
-
-
int(0) bool(false) string(62) " Failed connect to www.call2all.co.il:443;connection timed out"
-
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@שואל-ברצינות בלי
?>
?
אם זה בטעות אתה לא צריך להשיבזה מיותר במקרה הזה, צריך את זה רק כאשר אתה משלב קוד PHP בתוך קובץ HTML
-
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
int(0) bool(false) string(62) " Failed connect to www.call2all.co.il:443;connection timed out"
יתכן שמדובר בקובץ כבד?
כמה שוקל הקובץ המדובר שאתה מנסה להעביר? -
@שואל-ברצינות דקה...
אבל כשחיפשתי את זה, גיליתי שב- 000webhost.com, אתה מקבל על מה שאתה משלם ...(התכוונתי ל החינמית...)
הכל 'ייתכן' שנחסם... -
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@שואל-ברצינות דקה...
אבל כשחיפשתי את זה, גיליתי שב- 000webhost.com, אתה מקבל על מה שאתה משלם ...(התכוונתי ל החינמית...)
הכל 'ייתכן' שנחסם...לא שמעתי על הגבלה כזו של חסימת curl ב- 000webhost.com, במקרה שלך בודאי השגיאה מציגה עיכוב במענה של ימות ולא חסימה גורפת של curl
יתכן שיש הגבלה על זמן הריצה של הקוד, אפשר לבדוק את זה עם הקוד הבא:<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); //var_dump( $result['code'], $result['answer'], $result['error'] ); print_r( $result['info'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output , 'error' => ( $error_msg ?? 'no errors' ), 'info' => $info] ); }
-
Warning: curl_getinfo() expects at least 1 parameter, 0 given in /storage/.../copywcurl.php on line 30
-
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
Warning: curl_getinfo() expects at least 1 parameter, 0 given in /storage/.../copywcurl.php on line 30
טעות שלי, ערכתי את הקוד בהודעה הקודמת
-
Array ( [url] => https://www.call2all.co.il/ym/api/FileAction?token=***%3A***&action=copy&what=ivr2%3A3%2F1%2F***.wav&target=ivr2%3A3%2F1%2F0%2F***.wav [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 7.010947 [namelookup_time] => 0.004131 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => 207.232.31.130 [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => [local_port] => 0 )
אין לי מושג מה כתוב פה.
להתייאש ? -
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
url
האם ערכת את הפלט או שזה הפלט המקורי?
-
-
@שואל-ברצינות כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@שואל-ברצינות דקה...
אבל כשחיפשתי את זה, גיליתי שב- 000webhost.com, אתה מקבל על מה שאתה משלם ...(התכוונתי ל החינמית...)
הכל 'ייתכן' שנחסם...לא שמעתי על הגבלה כזו של חסימת curl ב- 000webhost.com, במקרה שלך בודאי השגיאה מציגה עיכוב במענה של ימות ולא חסימה גורפת של curl
יתכן שיש הגבלה על זמן הריצה של הקוד, אפשר לבדוק את זה עם הקוד הבא:<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); //var_dump( $result['code'], $result['answer'], $result['error'] ); print_r( $result['info'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output , 'error' => ( $error_msg ?? 'no errors' ), 'info' => $info] ); }
אותי קצת בלבל הקוד הזה אם תוסיף עליו מעט הסברים אוכל לנסות לעזור אם צריך כמובן
-
@יואל-נחמיה לפי מה שאני רואה ב-stackoverflow יתכן שהפתרון שלך הוא באמצעות הארכת זמן הביצוע המקסימלי של curl:
<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); //var_dump( $result['code'], $result['answer'], $result['error'] ); print_r( $result['info'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 42); $server_output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output , 'error' => ( $error_msg ?? 'no errors' ), 'info' => $info] ); }
-
@הלי כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@שואל-ברצינות כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@יואל-נחמיה כתב בקוד להעתיק קובץ ע"י מספר בלבד : צריך עזרה:
@שואל-ברצינות דקה...
אבל כשחיפשתי את זה, גיליתי שב- 000webhost.com, אתה מקבל על מה שאתה משלם ...(התכוונתי ל החינמית...)
הכל 'ייתכן' שנחסם...לא שמעתי על הגבלה כזו של חסימת curl ב- 000webhost.com, במקרה שלך בודאי השגיאה מציגה עיכוב במענה של ימות ולא חסימה גורפת של curl
יתכן שיש הגבלה על זמן הריצה של הקוד, אפשר לבדוק את זה עם הקוד הבא:<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); $url = 'https://www.call2all.co.il/ym/api/FileAction'; $query = [ 'token' => '0770000000:1234', 'action' => 'copy', 'what' => 'ivr2:3/1/***.wav', 'target' => 'ivr2:3/1/0/***.wav', ]; $result = call_API($url, $query); //var_dump( $result['code'], $result['answer'], $result['error'] ); print_r( $result['info'] ); function call_API($url, $query = []){ $ch = curl_init(); if( !empty( $query ) ) $url .= '?'.http_build_query($query); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch); return( ['code' => $http_code, 'answer' => $server_output , 'error' => ( $error_msg ?? 'no errors' ), 'info' => $info] ); }
אותי קצת בלבל הקוד הזה אם תוסיף עליו מעט הסברים אוכל לנסות לעזור אם צריך כמובן
זה קוד php שמתחבר לשרת של ימות עם curl
הקוד מכיל שורות שנועדו לדבג את השגיאה ולמצוא את הנתון המשמעותי - אחרי כמה זמן חוזר timeout -
Notice: Undefined variable: cHandler in /storage/ssd4/862/20280862/public_html/copywcurl1.php on line 28 Warning: curl_setopt() expects parameter 1 to be resource, null given in /storage/ssd4/862/20280862/public_html/copywcurl1.php on line 28
והנ"ל (כנראה)
Array ( [url] => https://www.call2all.co.il/ym/api/FileAction?token=***%3A***&action=copy&what=ivr2%3A3%2F1%2F**.wav&target=ivr2%3A3%2F1%2F0%2F**.wav [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 7.010925 [namelookup_time] => 0.004117 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => 207.232.31.130 [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => [local_port] => 0 )