Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy this PHP script is working on apache and not on NGINX?
    primarykey
    data
    text
    <p>I did not get any solution, so trying to ask here, maybe someone can point me, why this script below does not work on NGINX+php5.3.21, but works fine on apache+php5.2.17, maybe its something in php.ini or just am I missing something in nginx.conf?</p> <p>It should force headers to download a file and trace if it was cancelled or finished, then do something. </p> <p>Just to make it start downloading in nginx I have to uncomment last flush(); but it still does not trace of the file "progress" if its cancelled or done. Apache is fine :(( Thanks!</p> <pre><code>&lt;?php $FOLDER_PROGRESS = 'progress/'; $FOLDER_FILES = 'files/'; switch($_REQUEST['acc']){ case 'download': $file = trim($_REQUEST['n']); if(!file_exists($FOLDER_FILES.$file)){ echo '&lt;script&gt;alert("Error: The file do not exists.");&lt;/script&gt;'; } else { $continue = 'OK'; } if($continue=='OK'){ $result = fopen($FOLDER_FILES.$file,'r'); $bytes = filesize($FOLDER_FILES.$file); if($bytes&lt;1){ //header('Location: /'); echo '&lt;script&gt;alert("Error: The file bytes length is 0.");&lt;/script&gt;'; } else { $fp1 = fopen($FOLDER_PROGRESS.trim($_REQUEST['tmp']).'.html','w'); fwrite($fp1,'Downloading'); fclose($fp1); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-type: application/force-download"); header("Content-Disposition: attachment; filename=".$file); header("Content-Type: application/octet-stream"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$bytes.""); ignore_user_abort(true); while ( !feof($result)) { echo fread($result, 4096); //handle if (connection_status()!=0 || connection_aborted()){ $bytes_transferred = ftell($result); //handle if($bytes_transferred&lt;$bytes) $accion = 'Canceled'; else $accion = 'Done!'; //Done here not run. file_put_contents($FOLDER_PROGRESS.trim($_REQUEST['tmp']).'.html',$accion); sleep(2); file_put_contents($FOLDER_PROGRESS.trim($_REQUEST['tmp']).'.html','Waiting'); flush(); die; } else { $cuenta = ftell($result) / $bytes * 100; if($cuenta&gt;=100){ $cuenta = 'Done!'; } else { $cuenta = 'Downloaded '.round($cuenta).'%'; } file_put_contents($FOLDER_PROGRESS.trim($_REQUEST['tmp']).'.html',$cuenta); if($cuenta=='Done!'){ sleep(2); file_put_contents($FOLDER_PROGRESS.trim($_REQUEST['tmp']).'.html','Waiting'); flush(); } } //Activate this for delay download. //flush(); //sleep(1); } fclose($result); } } break; case 'tmp': //create file control //$temp = '__'.time(); $temp = '__'.$_REQUEST['nf']; $fp = fopen($FOLDER_PROGRESS.$temp.'.html','w'); fwrite($fp,'Waiting'); fclose($fp); echo trim($temp); break; } ?&gt; </code></pre> <p>php works fine, phpinfo() returns all the positive information. nginx.conf</p> <pre><code>user www-data; worker_processes 8; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 0; client_max_body_size 2048m; types_hash_max_size 2048; server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } </code></pre> <p>and mysite.conf</p> <pre><code>server { listen 80; server_name mysite.com www.mysite.com; access_log /var/log/nginx/mysite.access_log; error_log /var/log/nginx/mysite.error_log; root /var/www/www.mysite.com; index index.php index.htm index.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/www.mysite.com$fastcgi_script_name; include fastcgi_params; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload