דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP

בקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 4 כותבים 750 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #1

    משהו מוזר.
    יש לי כתובת URL (לוקאלי) שכשאני ניגש אליה מכרום או בפקודת cURL מהcmd התגובה תקינה, אבל כשאני ניגש אליה מקוד PHP הוא לא מגיב ונתקע בטיימאוט.

    הפונקציה בPHP היא:

    function makeAPIRequest($url) {
            // Initialize cURL session
            $curl = curl_init();
            
            // Enable verbose debug output
            $verbose = fopen('php://temp', 'w+');
            curl_setopt($curl, CURLOPT_STDERR, $verbose);
            curl_setopt($curl, CURLOPT_VERBOSE, true);
            // Set cURL options
            curl_setopt_array($curl, [
                CURLOPT_URL => $url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "GET",
                CURLOPT_VERBOSE => true,
                CURLOPT_STDERR => $verbose,
                CURLOPT_USERAGENT => 'PHP/cURL',
                CURLOPT_INTERFACE => "127.0.0.1",
                CURLOPT_PROTOCOLS => CURLPROTO_HTTP,
                CURLOPT_TIMEOUT => 10,            // הקטנתי את הtimeout
                CURLOPT_CONNECTTIMEOUT => 5,      // הוספתי timeout להתחברות
                CURLOPT_TCP_NODELAY => true,      // נסה למנוע buffering
                CURLOPT_FORBID_REUSE => true,     // מנע שימוש חוזר בחיבור
                CURLOPT_FRESH_CONNECT => true,    // אכוף חיבור חדש
                CURLOPT_HTTPHEADER => [
                    "Accept: application/json",
                    "Cache-Control: no-cache",
                    "Connection: close",           // שיניתי ל-close
    
                ],
            ]);
            
            // Log request start time
            $startTime = microtime(true);
            
            // Execute cURL request
            $response = curl_exec($curl);
            
            // Calculate request duration
            $duration = microtime(true) - $startTime;
            
            // Get request info
            $info = curl_getinfo($curl);
            
            // If there's an error, get verbose debug information
            if ($response === false) {
                rewind($verbose);
                $verboseLog = stream_get_contents($verbose);
                
                $errorDetails = [
                    'error' => curl_error($curl),
                    'error_no' => curl_errno($curl),
                    'info' => $info,
                    'verbose_log' => $verboseLog,
                    'duration' => $duration,
                    'url' => $url
                ];
                
                fclose($verbose);
                curl_close($curl);
                
                throw new Exception("cURL Error: " . json_encode($errorDetails, JSON_PRETTY_PRINT));
            }
            
            // Close resources
            fclose($verbose);
            curl_close($curl);
            
            // Log success information
            error_log(sprintf(
                "API Request successful - URL: %s, Duration: %.2fs, Status: %d, Size: %d bytes",
                $url,
                $duration,
                $info['http_code'],
                $info['size_download']
            ));
            
            // Decode JSON response
            $decodedResponse = json_decode($response, true);
            
            if (json_last_error() !== JSON_ERROR_NONE) {
                throw new Exception(sprintf(
                    "JSON Decode Error: %s. Raw response: %s",
                    json_last_error_msg(),
                    substr($response, 0, 1000)
                ));
            }
            
            return $decodedResponse;
        }
    

    שרת האינטרנט nginx. (עדכון: בדקתי גם באפאצי וזה ג"כ נתקע ).
    בלוגים הוא ניגש לnginx

    127.0.0.1 - - [24/Dec/2024:16:06:05 +0200] "GET /index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator HTTP/1.1" 499 0 "-" "PHP/cURL"
    

    אבל מאיזשהו סיבה הוא נתקע אח"כ.

    והתגובה היא:

    Error: cURL Error: { "error": "Operation timed out after 10016 milliseconds with 0 bytes received", "error_no": 28, "info": { "url": "http:\/\/g-in.com:200\/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator", "content_type": null, "http_code": 0, "header_size": 0, "request_size": 278, "filetime": -1, "ssl_verify_result": 0, "redirect_count": 0, "total_time": 10.016296, "namelookup_time": 0.001899, "connect_time": 0.002136, "pretransfer_time": 0.002204, "size_upload": 0, "size_download": 0, "speed_download": 0, "speed_upload": 0, "download_content_length": -1, "upload_content_length": 0, "starttransfer_time": 0, "redirect_time": 0, "redirect_url": "", "primary_ip": "127.0.0.1", "certinfo": [], "primary_port": 200, "local_ip": "127.0.0.1", "local_port": 52303, "http_version": 0, "protocol": 1, "ssl_verifyresult": 0, "scheme": "http", "appconnect_time_us": 0, "connect_time_us": 2136, "namelookup_time_us": 1899, "pretransfer_time_us": 2204, "redirect_time_us": 0, "starttransfer_time_us": 0, "posttransfer_time_us": 2214, "total_time_us": 10016296, "effective_method": "GET", "capath": "", "cainfo": "" }, "verbose_log": "* Host g-in.com:200 was resolved.\n* IPv6: (none)\n* IPv4: 127.0.0.1\n* Trying 127.0.0.1:200...\n* Name '127.0.0.1' family 2 resolved to '127.0.0.1' family 2\n* Local port: 0\n* Connected to g-in.com (127.0.0.1) port 200\n* using HTTP\/1.x\n> GET \/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator HTTP\/1.1\r\nHost: g-in.com:200\r\nUser-Agent: PHP\/cURL\r\nAccept: application\/json\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n* Request completely sent off\n* Operation timed out after 10016 milliseconds with 0 bytes received\n* closing connection #0\n", "duration": 10.016844987869263, "url": "http:\/\/g-in.com:200\/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator" }
    
    תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

      בשניהם מדובר באותם פרמטרים?
      האם בPHP השגיאה היא גם אם תכתוב:

      echo file_get_contents('http://g-in.com:200/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator');
      

      ?

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      1
      • chagoldC מנותק
        chagoldC מנותק
        chagold
        כתב ב נערך לאחרונה על ידי chagold
        #3
        Warning: file_get_contents(http:\/\/g-in.com:200\/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator): Failed to open stream: No such file or directory in C:\xampp\file.php on line 338
        
        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          סליחה, השארתי את ה/ מהJSON, שים את הכתובת רגיל (ערכתי את ההודעה תיקנתי גם בקוד שלי).

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • chagoldC מנותק
            chagoldC מנותק
            chagold
            כתב ב נערך לאחרונה על ידי chagold
            #5
            Warning: file_get_contents(http://g-in.com:200/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator): Failed to open stream: HTTP request failed! in C:\xampp\file.php on line 338
            
            תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #6

              @chagold מי אחראי על ה-index.php שרץ בפורט 200? האם תוכל לודא שה-PHP מקבל את הבקשה?
              האם תוכל להדפיס את הבקשה ש-index.php מקבל ולבדוק אם יש הבדלים בין הבקשה מ-PHP לבקשה מפקודת curl או מכרום?

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              1
              • chagoldC מנותק
                chagoldC מנותק
                chagold
                כתב ב נערך לאחרונה על ידי chagold
                #7

                לכאו' הוא לא מקבל את הבקשה בכלל. (הדפסתי ללוג ובבקשה הרלוונטית הוא לא מדפיס, ובבקשות האחרות כן).

                תגובה 1 תגובה אחרונה
                0
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי yossiz
                  #8

                  יש לך לוג של php-fpm?
                  ההדפסה ללוג הוא מיד בהתחלה של התוכנה?

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  1
                  • chagoldC מנותק
                    chagoldC מנותק
                    chagold
                    כתב ב נערך לאחרונה על ידי chagold
                    #9

                    רק עכשיו הצלחתי להבין מה הסיבה לכל שורה בלוגים של הnginx.

                    כשאני פונה מהURL (=בגוגל כרום, מה שחוזר תקין) יוצא מה שכתוב בשורה 1 ו-2. (לא יודע למה הוא מדפיס 2 שורות כאילו זה 2 בקשות).
                    שורה 4 זה הבקשה בצורה ש@dovid אמר לי לעשות באמצעות file_get_contents, ושורה 5 זה הבקשה באמצעות curl.
                    לא יודע למה בשורה 1,4,5 הוא לא כותב את כל הדומיין אלא מתחיל מה-index.php.

                    127.0.0.1 - - [24/Dec/2024:23:36:44 +0200] "GET /index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator HTTP/1.1" 200 104 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" "-"
                    127.0.0.1 - - [24/Dec/2024:23:36:45 +0200] "GET /favicon.ico HTTP/1.1" 200 38672 "http://g-in.com:200/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" "-"
                    
                    127.0.0.1 - - [24/Dec/2024:23:37:56 +0200] "GET /index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator HTTP/1.1" 499 0 "-" "-" "-"
                    127.0.0.1 - - [24/Dec/2024:23:38:06 +0200] "GET /index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator HTTP/1.1" 499 0 "-" "PHP/cURL" "-"
                    

                    @yossiz איפה אני מוצא את הלוגים של php-fpm? בתיקיית PHP אין לי בכלל תיקיית משנה של logs.

                    yossizY תגובה 1 תגובה אחרונה
                    0
                    • yossizY מנותק
                      yossizY מנותק
                      yossiz
                      השיב לchagold ב נערך לאחרונה על ידי yossiz
                      #10

                      @chagold כתב בבקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP:

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

                      זה באמת שתי בקשות
                      שורה 1 זה העיקר, שורה 2 הוא סתם כי כרום מנסה לבקש favicon להציג אייקון של האתר

                      @chagold כתב בבקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP:

                      לא יודע למה בשורה 1,4,5 הוא לא כותב את כל הדומיין אלא מתחיל מה-index.php.

                      גם ב-2 זה מתחיל ככה. תמיד בקשת HTTP הוא ככה (הדומיין נמצא ב-header בשם host). השדה השני שכולל כל הדומיין הוא ה-referrer (ככה זה מוגדר בברירת מחדל. אפשר לשנות את הפורמט של הלוג בהגדרות)

                      @chagold כתב בבקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP:

                      איפה אני מוצא את הלוגים של php-fpm? בתיקיית PHP אין לי בכלל תיקיית משנה של logs.

                      אני לא יודע אצלך אם זה מוגדר עם php-fpm או עם משהו אחר, אני גם לא יודע איפה אתה יכול לחפש לוגים

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      תגובה 1 תגובה אחרונה
                      1
                      • chagoldC מנותק
                        chagoldC מנותק
                        chagold
                        כתב ב נערך לאחרונה על ידי
                        #11

                        זה מוגדר עם php-fpm.

                        image.png

                        אבל הוא לא כותב ללוגים שלו כלום.
                        לא בבקשה מהURL ולא מהPHP.

                        תגובה 1 תגובה אחרונה
                        0
                        • chagoldC מנותק
                          chagoldC מנותק
                          chagold
                          כתב ב נערך לאחרונה על ידי chagold
                          #12

                          רק עכשיו הצלחתי לגרום לו לכתוב את הלוגים של php-fpm.
                          תכלס, הלוג מדפיס רק את הבקשה של @dovid את שלי הוא לא מדפיס.
                          אבל במה שהוא מדפיס נוסף טקסט 'amp;' כמה פעמים.

                          [26-Dec-2024 07:52:20 UTC] PHP Warning:  file_get_contents(http://g-in.com:200/index.php?format=json&p=chack_token_to_sp&Module=sub_projects&token_sub_project=kjsadouewio&token_user=AIAvo7yAhWqMrQJl271P&nick=administrator): Failed to open stream: HTTP request failed! in C:\xampp\file.php on line 339
                          [26-Dec-2024 07:52:20 UTC] API call failed: Failed to get contents
                          
                          
                          yossizY תגובה 1 תגובה אחרונה
                          0
                          • chagoldC מנותק
                            chagoldC מנותק
                            chagold
                            כתב ב נערך לאחרונה על ידי chagold
                            #13

                            אבל לא התוים הנוספים הם הסיבה. כי עשיתי טסט בלי פרמטרים בכלל. ועדיין..

                            [26-Dec-2024 08:08:38 UTC] PHP Warning:  file_get_contents(http://g-in.com:200/index.php): Failed to open stream: HTTP request failed! in C:\xampp\file.php on line 340
                            [26-Dec-2024 08:08:38 UTC] API call failed: Failed to get contents
                            
                            תגובה 1 תגובה אחרונה
                            0
                            • yossizY מנותק
                              yossizY מנותק
                              yossiz
                              השיב לchagold ב נערך לאחרונה על ידי
                              #14

                              @chagold כתב בבקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP:

                              אבל לא התוים הנוספים הם הסיבה. כי עשיתי טסט בלי פרמטרים בכלל. ועדיין..

                              [26-Dec-2024 08:08:38 UTC] PHP Warning:  file_get_contents(http://g-in.com:200/index.php): Failed to open stream: HTTP request failed! in C:\xampp\file.php on line 340
                              [26-Dec-2024 08:08:38 UTC] API call failed: Failed to get contents
                              

                              יש לך שני אתרי PHP אם הבנתי נכון, ואתה מנסה לעשות קריאה מאחד לשני
                              הלוג פה מראה רק את הקריאה של file_get_contents
                              האם אתה בטוח שהאתר השני (g-in.com:200) גם עובר דרך php-fpm?

                              אם לא, אז מה כן?
                              אתה יכול להראות את הקונפיגרציה של השרת אפאצ'י או nginx?

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                              תגובה 1 תגובה אחרונה
                              0
                              • chagoldC מנותק
                                chagoldC מנותק
                                chagold
                                כתב ב נערך לאחרונה על ידי chagold
                                #15

                                זה לוג רק של שגיאות.
                                הוא נוצר באמצעות הקוד הזה -

                                c:\tools\nssm.exe set PHP-FPM AppParameters "-b 127.0.0.1:9000 -d error_log=C:/php/logs/php-fpm.log -d display_errors=1 -d log_errors=1 -d error_reporting=E_ALL"
                                

                                לא הצלחתי לעשות לוג של כל הבקשות

                                # nginx.conf - Combined Configuration
                                
                                worker_processes  1024;
                                
                                error_log  "C:/nginx/logs/error.log";
                                #error_log  logs/error.log  notice;
                                #error_log  logs/error.log  info;
                                
                                events {
                                    worker_connections  1024;
                                }
                                
                                http {
                                    include       "C:/nginx/conf/mime.types";
                                    
                                
                                    default_type  application/octet-stream;
                                    charset utf-8;
                                    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                                     '$status $body_bytes_sent "$http_referer" '
                                                     '"$http_user_agent" "$http_x_forwarded_for"';
                                
                                    log_format  debug  '$remote_addr - $remote_user [$time_local] "$request" '
                                                   '$status $body_bytes_sent "$http_referer" '
                                                   '"$http_user_agent" "$http_x_forwarded_for" '
                                                   'rt=$request_time ua="$upstream_addr" '
                                                   'us="$upstream_status" ut="$upstream_response_time" '
                                                   'ul="$upstream_response_length" '
                                                   'cs=$upstream_cache_status';
                                
                                access_log  logs/access.log  debug;
                                
                                    access_log  "C:/nginx/logs/access.log"  main;
                                
                                    sendfile        on;
                                    keepalive_timeout  65;
                                
                                    # FastCGI Settings
                                    fastcgi_buffers 8 16k;
                                    fastcgi_buffer_size 32k;
                                    fastcgi_connect_timeout 300;
                                    fastcgi_send_timeout 300;
                                    fastcgi_read_timeout 300;
                                
                                    # Default server (port 80)
                                    server {
                                        charset utf-8;
                                        listen 80;
                                        server_name localhost;
                                        root C:/xampp/reko;
                                        
                                        location / {
                                            index index.php index.html index.htm;
                                            try_files $uri $uri/ /index.php?$args;
                                            autoindex on;
                                        }
                                
                                        error_page   500 502 503 504  /50x.html;
                                        location = /50x.html {
                                            root   html;
                                        }
                                
                                        location ~ \.php$ {
                                            fastcgi_pass 127.0.0.1:9000;
                                            fastcgi_index index.php;
                                            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                            include fastcgi_params;
                                        }
                                    }
                                
                                    # Port 200 server (reko)
                                    server {
                                        listen 200;
                                        server_name localhost;
                                        root C:/xampp/reko;
                                        
                                        location / {
                                            index index.php index.html index.htm;
                                            try_files $uri $uri/ /index.php?$args;
                                            autoindex on;
                                            proxy_connect_timeout 10;
                                            proxy_send_timeout 10;
                                            proxy_read_timeout 10;
                                        }
                                
                                        error_page   500 502 503 504  /50x.html;
                                        location = /50x.html {
                                            root   html;
                                        }
                                
                                        location ~ \.php$ {
                                            fastcgi_pass 127.0.0.1:9000;
                                            fastcgi_index index.php;
                                            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                            include fastcgi_params;
                                        }
                                    }
                                
                                
                                }
                                

                                והקונפיגורציה של php-fpm

                                [global]
                                pid = C:/nginx/php-fpm.pid
                                error_log = C:/php/logs/php-fpm.log
                                
                                [www]
                                listen = 127.0.0.1:9000
                                listen.allowed_clients = 127.0.0.1
                                user = nobody
                                pm = dynamic
                                pm.max_children = 5
                                pm.start_servers = 2
                                pm.min_spare_servers = 1
                                pm.max_spare_servers = 3
                                access.log = C:/php/logs/php-fpm-access.log
                                catch_workers_output = yes
                                
                                תגובה 1 תגובה אחרונה
                                1
                                • chagoldC מנותק
                                  chagoldC מנותק
                                  chagold
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  התקרבתי לפתרון. לא יודע איך לחצות את הגשר.
                                  ניסיתי לבדוק אם הPHP יריץ את הפקודה cmd זה כן יעבוד. והתברר שהבקשה עצמה תקינה, (והיא גם מדפיסה את התגובה לקובץ c:\url_response.txt), היא רק לא מחזירה את הפלט לתוכנת הPHP שביקשה אותה.
                                  זה הפקודה

                                      function createFullSystem() {
                                          $urlFile = 'C:\\url_command.txt';
                                          $batchFile = 'C:\\url_runner.bat';
                                          $outputFile = 'C:\\url_response.txt';
                                          
                                          $url = "http://g-in.com:200/index.php?" . http_build_query([
                                              'format' => 'json',
                                              'p' => 'chack_token_to_sp',
                                              'Module' => 'sub_projects',
                                              'token_sub_project' => 'kjsadouewio',
                                              'token_user' => 'AIAvo7yAhWqMrQJl271P',
                                              'nick' => 'administrator'
                                          ]);
                                          
                                          file_put_contents($urlFile, $url);
                                          
                                          $batchContent = "@echo off\n";
                                          $batchContent .= "cd C:\\tools\n";
                                          $batchContent .= "set /p URL=<" . $urlFile . "\n";
                                          // בדיוק אותה פקודה שעובדת ב-CMD
                                          $batchContent .= "C:\\Windows\\System32\\curl.exe -v -H \"User-Agent: PHP/cURL\" --connect-timeout 10 -m 10 \"%URL%\" > " . $outputFile . " 2>&1\n";
                                          $batchContent .= "exit\n";
                                          
                                          file_put_contents($batchFile, $batchContent);
                                          
                                          $descriptorspec = array(
                                              0 => array("pipe", "r"),
                                              1 => array("pipe", "w"),
                                              2 => array("pipe", "w")
                                          );
                                          
                                          $process = proc_open("cmd /c " . $batchFile, $descriptorspec, $pipes);
                                          
                                          if (is_resource($process)) {
                                              stream_set_blocking($pipes[1], 0);
                                              stream_set_blocking($pipes[2], 0);
                                              
                                              $start = time();
                                              $timeout = 1;
                                              
                                              do {
                                                  $status = proc_get_status($process);
                                                  if (!$status['running']) {
                                                      break;
                                                  }
                                                  if (time() - $start > $timeout) {
                                                      proc_terminate($process);
                                                      echo "Process terminated due to timeout\n";
                                                      break;
                                                  }
                                                  sleep(1);
                                              } while (true);
                                              
                                              fclose($pipes[0]);
                                              fclose($pipes[1]);
                                              fclose($pipes[2]);
                                              proc_close($process);
                                          }
                                          
                                          if(file_exists($outputFile)) {
                                              echo "Response from server:\n";
                                              echo file_get_contents($outputFile);
                                          }
                                      }
                                  
                                  yossizY תגובה 1 תגובה אחרונה
                                  1
                                  • yossizY מנותק
                                    yossizY מנותק
                                    yossiz
                                    השיב לchagold ב נערך לאחרונה על ידי yossiz
                                    #17

                                    @chagold כתב בבקשת cURL לnginx שעובדת מהקונסול אבל לא מתוך PHP:

                                    התקרבתי לפתרון

                                    אני לא יודע כמה זה מקדם אותנו, כי מה שהסקריפט עושה הוא בדיוק כמו להריץ פקודת curl ידנית. וזה ידענו כבר שעובד.

                                    יש משהו מוזר פה

                                    נסה לעבוד עם file_get_contents ולבדוק אם זה עובד בשום צורה

                                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • yossizY מנותק
                                      yossizY מנותק
                                      yossiz
                                      כתב ב נערך לאחרונה על ידי yossiz
                                      #18

                                      נראה לי שמצאתי את התשובה!!

                                      https://stackoverflow.com/a/13814609/8997905

                                      (אני רק לא מבין אם ככה למה זה כן עובד 🤔 )

                                      אם זו באמת הבעיה, תחפש מדריך רשמי של PHP איך להקים שרת בסביבת ווינדוס בצורה נכונה והבעיה אמורה להיפתר
                                      למשל זה: https://www.php.net/manual/en/install.windows.apache2.php
                                      (ותוודא שיש לך גירסאות מעודכנות של הכלים)

                                      מישהו כתב פה פתרון לnginx על ווינדוס

                                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                      תגובה 1 תגובה אחרונה
                                      2
                                      • chagoldC מנותק
                                        chagoldC מנותק
                                        chagold
                                        כתב ב נערך לאחרונה על ידי chagold
                                        #19

                                        @yossiz תודה רבה!
                                        זנ כנראה לא הבעיה. (והא ראיה שעבד לי הגישה לcmd).
                                        אבל לו הייתי יודע על הפוסט בסטאק הייתי מראש מוותר על nginx בלוקאלי. (או מתקין לינוקס בלוקלי?😕 ).
                                        עכ"פ חזרתי עכשיו לאפאצי שהיה לי, ונראה אם אני יסתדר בהמשך.

                                        תגובה 1 תגובה אחרונה
                                        1
                                        • Aharon 0A מנותק
                                          Aharon 0A מנותק
                                          Aharon 0
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          תתחיל מזה שתשנה את הפורט מ 200 למעל 1024, וחוץ מזה תבדוק שאתה לא נופל על פורט שמור:
                                          https://www.geeksforgeeks.org/50-common-ports-you-should-know/

                                          תגובה 1 תגובה אחרונה
                                          -1

                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום