PHP: 504 Time-out

It's my first time deploying an PHP app, as I'm trying to pass an interview. They sent me a custom, legacy PHP framework and gave me a task which was successfully finished. I was happy till the moment I've realized that my deployment is not working :peepoexit: Error: 504 Gateway Time-out | nginx/1.24.0 I suppose the problem lays in Port usage, but I can not find anything online on how to utilize $PORT.
No description
Solution:
Fix: 1. Delete deployment from your project 2. Click add domain again, and this time nginx's php-fpm will prompt you for a port, and suggest port of your PHP app 🪄...
Jump to solution
21 Replies
Percy
Percy5mo ago
Project ID: e3e3275b-dd08-457b-83d6-d3c46e4fddd6
devnyxie
devnyxieOP5mo ago
e3e3275b-dd08-457b-83d6-d3c46e4fddd6 I've tried to co create custom nginx.template.conf, but again nothing worked:
worker_processes 5;
daemon off;

worker_rlimit_nofile 8192;

events {
worker_connections 4096; # Default: 1024
}

http {
include $!{nginx}/conf/mime.types;
index index.html index.htm index.php;

default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /dev/stdout;
error_log /dev/stdout;
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 128; # this seems to be required for some vhosts

server {
listen ${PORT};
listen [::]:${PORT};
server_name localhost;

$if(NIXPACKS_PHP_ROOT_DIR) (
root ${NIXPACKS_PHP_ROOT_DIR};
) else (
root /app;
)

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";

index index.php;

charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

$if(IS_LARAVEL) (
error_page 404 /index.php;
) else ()

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include $!{nginx}/conf/fastcgi_params;
include $!{nginx}/conf/fastcgi.conf;
}

location ~ /\.(?!well-known).* {
deny all;
}
}
}
worker_processes 5;
daemon off;

worker_rlimit_nofile 8192;

events {
worker_connections 4096; # Default: 1024
}

http {
include $!{nginx}/conf/mime.types;
index index.html index.htm index.php;

default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /dev/stdout;
error_log /dev/stdout;
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 128; # this seems to be required for some vhosts

server {
listen ${PORT};
listen [::]:${PORT};
server_name localhost;

$if(NIXPACKS_PHP_ROOT_DIR) (
root ${NIXPACKS_PHP_ROOT_DIR};
) else (
root /app;
)

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";

index index.php;

charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

$if(IS_LARAVEL) (
error_page 404 /index.php;
) else ()

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include $!{nginx}/conf/fastcgi_params;
include $!{nginx}/conf/fastcgi.conf;
}

location ~ /\.(?!well-known).* {
deny all;
}
}
}
Brody
Brody5mo ago
this has nothing to do with PORT this is an issue with the code or configuration
devnyxie
devnyxieOP5mo ago
Hi Brody. Glad you are here. Any idea on how to debug this issue then if I can't see any errors in logs? Locally everything works just fine (as always :hmm:).
No description
Brody
Brody5mo ago
are you on the v2 runtime? check your service settings
devnyxie
devnyxieOP5mo ago
Yeah. Should I change to legacy? I've updated the project to PHP 8.3.8.
Brody
Brody5mo ago
yeah try legacy, you may get more logs from legacy since there is a bug with the v2 runtime where some logs dont show up
devnyxie
devnyxieOP5mo ago
@Brody I've tried to push one fix with V2, and it was building for over 10 minutes. Removed it, switched to Legacy, there are only Nginx related logs again :notstonks:
Brody
Brody5mo ago
then that means you arent logging the error
devnyxie
devnyxieOP5mo ago
Well, no, I'm trying to log at least the start of the application mate
No description
devnyxie
devnyxieOP5mo ago
It's a very very simple application, nothing can be broken here, literally
Brody
Brody5mo ago
its going to be very hard to chase down bugs without proper logging
devnyxie
devnyxieOP5mo ago
All I'm trying to say, is, I would see the log if the configuration was right and by going to "https://betterstack-project-production-7fea.up.railway.app/" I would be accessing the application. But I'm not. And I just want to learn what should I even do.
Brody
Brody5mo ago
add proper error handling and logging
devnyxie
devnyxieOP5mo ago
ok. @Brody I've pushed error-handling update, featuring logging and error handling for the root route. Nothing works, but I've got a "type" of log: 2024/06/24 16:02:26 [error] 55#55: *9 open() "/app/"" failed (2: No such file or directory), client: 192.168.63.241, server: localhost, request: "GET /%22 HTTP/1.1", host: "betterstack-project-production-7fea.up.railway.app" It's trying to access app dir, and for some reason it does not even exist?
Brody
Brody5mo ago
@aleks php time
devnyxie
devnyxieOP5mo ago
@Brody :blob_help: It works on another platform.
Brody
Brody5mo ago
that doesn't mean you don't have something missconfigured on this platform I'm sure you've seen the meme "it works on my machine"
devnyxie
devnyxieOP5mo ago
:hmm: well any help apart from being sure that my code is bad tho? :MattCool: I've commented out all of my code, simply returning "hello world" and nothing works either. Project specific settings are all default too.
Solution
devnyxie
devnyxie5mo ago
Fix: 1. Delete deployment from your project 2. Click add domain again, and this time nginx's php-fpm will prompt you for a port, and suggest port of your PHP app 🪄
devnyxie
devnyxieOP5mo ago
thanks @Brody for believing in me 🙏🏻
Want results from more Discord servers?
Add your server