kod*_*ire 5 php apache laravel
我正在使用 Laravel,当我将项目上传到服务器时,它返回 500、503 和其他类型的错误。因为我正在使用,Virtualmin
所以我检查了 error_log /var/log/virtualmin
,发现它php-fpm
没有启用。所以我启用了它,现在所有页面上都出现File not found
错误!
所以我添加ProxyErrorOverride on
到文件中/etc/httpd/conf/httpd.conf
,但后来Not Found
The requested URL /index.php was not found on this server.
我对其进行了评论并添加<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
,但它再次返回File not found
。
然后我进入/etc/php-fpm.d/www.conf
并编辑了这部分从;chroot =
到chroot = /home/mysite/public_html/public
。但没有结果:(
更新
我的根文件夹中没有任何.htaccess
文件,但在公共文件夹中,并且在其中我有:
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
更新2
更新3
我修改了/etc/php-fpm.d/www.conf
由此:
user = apache
group = apache
Run Code Online (Sandbox Code Playgroud)
对此:
user = php-fpm
group = php-fpm
Run Code Online (Sandbox Code Playgroud)
由此:
listen = 127.0.0.1:9000
;listen = /run/php-fpm/www.sock
Run Code Online (Sandbox Code Playgroud)
对此:
;listen = 127.0.0.1:9000
listen = /run/php-fpm/www.sock
Run Code Online (Sandbox Code Playgroud)
反之亦然。
由此:
listen.owner = apache
listen.group = apache
Run Code Online (Sandbox Code Playgroud)
对此:
listen.owner = php-fpm
listen.group = php-fpm
Run Code Online (Sandbox Code Playgroud)
由此:
;listen.acl_users = apache,nginx
Run Code Online (Sandbox Code Playgroud)
对此:
listen.acl_users = apache,nginx
Run Code Online (Sandbox Code Playgroud)
由此:
;listen.allowed_clients = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
对此:
listen.allowed_clients = any
Run Code Online (Sandbox Code Playgroud)
由此:
;chroot = /
Run Code Online (Sandbox Code Playgroud)
对此:
chroot = /home/mysite/public_html
Run Code Online (Sandbox Code Playgroud)
由此:
;chdir = /
Run Code Online (Sandbox Code Playgroud)
对此:
chdir = /public
Run Code Online (Sandbox Code Playgroud)
抱歉,我分别说了每一项,因为我做了各种更改,每一项都可能因每次更改值而有所不同。
现在错误是:
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Run Code Online (Sandbox Code Playgroud)
和我的错误日志:
[Thu Feb 21 02:58:13.318048 2019] [proxy:error] [pid 4170] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (127.0.0.1) failed
[Thu Feb 21 02:58:13.318146 2019] [proxy:error] [pid 4170] AH00959: ap_proxy_connect_backend disabling worker for (127.0.0.1) for 60s
[Thu Feb 21 02:58:13.318155 2019] [proxy_fcgi:error] [pid 4170] [client 69.689.30.21:64560] AH01079: failed to make connection to backend: 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
请帮我
我也遇到了同样的错误,经过几乎一整天的努力才找出原因。
就我而言,问题是在我的 vps 中启用了 IP v6,而我的接口中分配了 npo 真实 IP6 地址。
我刚刚禁用了 IPV6,一切又开始正常工作。(如果 virtualmin 中未使用 IPv6/IPv4,请禁用它)
步骤 1 - 在 shell 中使用以下命令编辑 sysctl.conf 文件
vi /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
步骤 2 - 添加以下两行以禁用 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)
步骤 3 - 保存并关闭文件 (Esc -> :wq)
步骤 4 - 为了立即生效,在 shell 中运行以下代码
sysctl -p
Run Code Online (Sandbox Code Playgroud)