我有一个由 nginx 提供服务的 PHP 应用程序/网站。当我使用 Google Chrome 浏览网站并打开开发工具网络面板时,我可以看到在导航到新页面 URL 页面之前有一个预取请求,服务器返回代码为 503(不可用)。
CloudFlare 正在被用作代理。
我很担心这些 503 错误。是否需要 nginx 配置才能正确处理预取请求?
我的 PHP 7.2 应用程序出现错误Message: Class 'NumberFormatter' not found
我们正在运行:
我尝试安装 PHP-intl,如果我再试一次,它似乎现在可以正常工作,我得到了这个:
# yum install php72-php-intl
# Package php72-php-intl-7.2.34-4.el7.remi.x86_64 already installed and latest version
# Nothing to do
我已重新加载 Apache,但未加载扩展:
php -m
没有列出模块。intl.so
通过运行,rpm -ql php72-php-intl
我可以看到这些文件已安装:
/etc/opt/remi/php72/php.d/20-intl.ini
/opt/remi/php72/root/usr/lib64/php/modules/intl.so
但是 extension_dir 设置为/usr/lib64/php/modules
为什么要安装到这个其他位置?我怎样才能让它安装到正确的模块目录,或者告诉 PHP 从 /opt/remi/php72/root/usr/lib64/php/modules加载 .so 文件的正确方法是什么?
我希望网站根目录中的目录索引文件位于子目录中,但我希望它index.html
位于子目录中/foo
bar.html
IE
我也想请求/foo
或/foo/
或/foo/:anything
解决bar.html
这是服务器定义:
server {
listen 80;
server_name domain.tld;
port_in_redirect off;
location / {
# ssl is terminated at our load bal
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
root /usr/share/nginx/mysite/public;
index index.html;
add_header Cache-Control "public max-age=600";
add_header "X-UA-Compatible" "IE=Edge,chrome=1";
charset UTF-8;
}
# this location doesn't work <<<<<<<<<<<<<<
location /foo {
root /usr/share/nginx/mysite/public/foo;
index bar.html;
}
# set expiration of assets to 30d for caching
location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
root /usr/share/nginx/mysite/public;
expires 30d;
add_header Cache-Control "public";
log_not_found off;
}
}
编辑:我在该服务器块的底部也有以下内容。
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/www;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
我已经阅读了我的网站文件/文件夹在 Linux 网络服务器上应具有哪些权限?
但是我仍然卡住了。我的设置是:
fastcgi_pass unix:/tmp/php5-fpm.sock;
我创建了一个webadmin
组并向其中添加了“ade”和 nginx:
$ groups ade
ade : ade webadmin
$ groups nginx
nginx : nginx webadmin
我已将站点中所有内容的所有者设置为我和 webadmin 组:chown ade:webadmin *
...如你看到的:
drwxrwxr-x 2 ade webadmin 4096 Jul 3 13:58 logs
drwxrwxr-x 5 ade webadmin 4096 Jul 4 08:35 public
drwxrwxr-x 4 ade webadmin 4096 Jul 3 16:18 system
drwxrwsr-x 2 ade webadmin 4096 Jul 9 16:13 uploads
然而,尽管上传的权限为 775(用户和组的 rwx),nginx 和 php 无法写入该文件夹。只有当我将它设置为 777 时,它才能将图像上传到它。
我在上述规范答案中看到了有关使用的建议,chmod u+w
但不明白为什么这是必要的。