我最近部署了我的第一个 nginx 设置,一切都非常好,除了位置解析让我发疯。我有一个简单的 php fastcgi 设置,如下所示:
location ~ \.php {
if (!-e $request_filename) {
return 404;
}
include /etc/nginx/fastcgi.conf;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
Run Code Online (Sandbox Code Playgroud)
现在我想用这样的基本身份验证来保护一些位置:
location /madmin {
auth_basic "Restricted";
auth_basic_user_file /var/www/localhost/admincp/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
使用他的设置,nginx 在访问 /madmin 时会要求输入密码,但不会在 /madmin/foo.php 上询问。如果我将身份验证位置更改为“位置 ~ ^/madmin”,那么 nginx 将提供 php 文件以供下载...
是不是可以在 nginx 中配置多个位置?如果没有,这里的解决方法是什么?
谢谢你的帮助。
我在 Linux Web 服务器上遇到了 PHP 输出缓冲区刷新的问题。输出缓冲区得到正确维护,所有正确的数据都在我的代码中推送到它,但通常的刷新机制不会将其刷新到浏览器。我已经尝试了这里发布的所有内容:http : //php.net/manual/en/function.flush.php但到目前为止没有成功。
我从 php.net 得到了一个小脚本来测试它:
<?php
ob_start();
for($i=0;$i<70;$i++)
{
echo 'printing...<br />';
ob_get_flush();
flush();
usleep(300000);
}
?>
Run Code Online (Sandbox Code Playgroud)
这应该向浏览器打印“正在打印...”70 次,每三秒一行。这在我的其他基于 Windows 的测试环境(仍然使用 apache、XAMPP 包)上运行良好,但在我的 Linux 服务器上却没有。它在向浏览器提供任何内容之前等待脚本完成,基本上忽略整个刷新命令。
如果有人以前经历过这种情况或知道任何可以提供帮助的东西(无论是服务器配置还是代码调整),我们将不胜感激!
我正在为VPS付费,并希望在接下来的几天内推出我的第一个网站。
我担心标准设置中可能存在一些明显的安全漏洞,所以我很想得到一些提示。我唯一知道的是关闭 PHP 中的错误报告并为 MySQL 创建用户/权限。还有更多类似的东西吗?
我正在使用:
我有一个脚本,可以在用户的主目录中执行多个命令。这些文件归用户所有,Apache(www-data组)对它们只有读取权限。该脚本需要由 PHP 通过 按需执行exec(),并执行一些文件的删除/解压缩,由于 Apache 没有对目录的写权限,因此失败。
我试过sudoers像这样编辑文件:
www-data ALL=(user) NOPASSWD: /bin/su user -c /home/user/bin/script.sh
Run Code Online (Sandbox Code Playgroud)
但它提示我输入用户的密码
我也试过
www-data ALL=(root) NOPASSWD: /usr/bin/sudo su user -c /home/user/bin/script.sh
Run Code Online (Sandbox Code Playgroud)
但这会提示输入www-data's sudopassword
如何在没有密码的情况下使其工作?
我有一个运行 Ubuntu、Apache 2 和 PHP5 和 Slicehost 的 LAMP 盒子。我对所有这些系统管理员的东西都有些陌生(我主要是一名 Web 开发人员)。
我需要在 PHP 中使用 IMAP 函数,但根据 phpinfo() 似乎没有启用它们。我如何启用它们?
我在网上能找到的所有信息都说我需要重新编译 PHP 才能添加它,但我不知道如何做到这一点。
任何建议将不胜感激。谢谢。
我很快就会在新的 Ubuntu Server 10.04 VPS 上建立 Simple Machines 论坛。论坛软件是用PHP编写的。我将使用 Nginx 作为 Web 服务器,我将按照指南在其上安装 PHP-FPM:http : //constantshift.com/install-php-fpm-5-3-2-on-ubuntu-10- 04-lucid-lynx/
但该指南并未真正解释有关设置 Memcached 或 APC 以进行缓存的任何内容。在环顾网络,搜索此站点并搜索 Stack Overflow 之后,我仍然缺乏如何成功设置这些的答案。
任何人都可以提供信息、指南、链接方面的帮助吗?非常感激。
我有一个客户让我尝试分析一个网站的漏洞。
发生的事情是,每个周末左右,数据库中一张表的一条记录的字段每次都会更改为相同的内容。从Jewelry到Jewelery <a href="http://[**REMOVED-FOR-SF**]/viewPress?press_id=407">[**REMOVED-FOR-SF**]</a><a href="http://[**REMOVED-FOR-SF**]/[**REMOVED-FOR-SF**].html">[**REMOVED-FOR-SF**]</a>。它总是相同的记录这一事实让我认为它是某种自动脚本,但如果是,我找不到它。
已完成以下工作:
下一步是什么?
我在我的虚拟主机配置中使用 VirtualDocumentRoot。
我的 VirtualDocumentRoot 设置为 /var/www/%1/,如果我创建一个文件夹说 test,它会按预期工作。问题是,当我在我的 php 文件中使用 $_SERVER["DOCUMENT_ROOT"] 时,它正在重新调整 /var/www。是否可以让 php 为 $_SERVER["DOCUMENT_ROOT"] 返回与 VirtualDocumentRoot 中配置的相同的路径。
“每个人”都知道 Apache 适用于 Linux/Unix,而在 Windows 上 IIS 是必经之路。
但是,我不是 Linux 专家,如果在生产环境中使用与开发过程中使用的设置相同的设置,那将是一种极大的解脱。我是一名独立开发人员,我正在努力使事情尽可能简单。我已经摆脱了其他问题,例如存储(-> 云)电子邮件(-> 邮戳)。
那么,当我将 Apache 放在来自 Rackspace 的 Windows 虚拟专用服务器中并将其用作PHP 项目的主要生产环境时,可能会发生什么真正的缺点?与不必学习不同操作系统的可能性相比,获得更多 VPS 资源的钱并不是什么大问题。
预计不会出现超大流量。我的 PHP 项目也可以相当优化。有一些繁重的脚本,但仅适用于内部(登录)用户。所有其他的都可以或多或少地静态提供。
我需要在脚本中获取 DNS 的最新 A 记录。该脚本正在执行一些监视操作。DNS 记录的默认 TTL 为 5 分钟,但监控脚本每分钟运行一次。我正在使用 PHP 的函数 dns_get_record 来获取 A 记录,但我想知道是否有一种方法可以忽略 TTL 缓存并从 DNS 服务器中获取记录而不是缓存。
当然,有什么方法可以强制执行此操作,以便不适用网络级缓存,并且每次运行脚本时,它实际上都会命中 DNS 服务器?
感谢斯帕什·古普塔