标签: php

如何在 nginx 的子位置中全局使用 FastCGI 和基本身份验证?

我最近部署了我的第一个 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 中配置多个位置?如果没有,这里的解决方法是什么?

谢谢你的帮助。

php nginx

6
推荐指数
1
解决办法
1万
查看次数

Apache/Linux 上的 PHP 输出缓冲区刷新问题

我在 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 服务器上却没有。它在向浏览器提供任何内容之前等待脚本完成,基本上忽略整个刷新命令。

如果有人以前经历过这种情况或知道任何可以提供帮助的东西(无论是服务器配置还是代码调整),我们将不胜感激!

linux php apache-2.2

6
推荐指数
1
解决办法
1万
查看次数

我的第一台服务器有什么安全提示吗?(完全初学者)

我正在为VPS付费,并希望在接下来的几天内推出我的第一个网站。

我担心标准设置中可能存在一些明显的安全漏洞,所以我很想得到一些提示。我唯一知道的是关闭 PHP 中的错误报告并为 MySQL 创建用户/权限。还有更多类似的东西吗?

我正在使用:

  • cPanel 和 WHM
  • CentOS 5
  • PHP
  • MySQL
  • Google 应用程序作为邮件服务器(所以也许我应该以某种方式禁用内置邮件服务器?!)

mysql security php apache-2.2

6
推荐指数
1
解决办法
839
查看次数

允许 Apache 以不同的用户身份运行命令

我有一个脚本,可以在用户的​​主目录中执行多个命令。这些文件归用户所有,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

如何在没有密码的情况下使其工作?

linux php sudo apache-2.2

6
推荐指数
1
解决办法
3万
查看次数

如何在 PHP 中启用 IMAP 功能?

我有一个运行 Ubuntu、Apache 2 和 PHP5 和 Slicehost 的 LAMP 盒子。我对所有这些系统管理员的东西都有些陌生(我主要是一名 Web 开发人员)。

我需要在 PHP 中使用 IMAP 函数,但根据 phpinfo() 似乎没有启用它们。我如何启用它们?

我在网上能找到的所有信息都说我需要重新编译 PHP 才能添加它,但我不知道如何做到这一点。

任何建议将不胜感激。谢谢。

php imap slicehost php5 apache-2.2

6
推荐指数
2
解决办法
7万
查看次数

如何在 Ubuntu Server 10.04 for PHP 上设置 Memcached/APC?

我很快就会在新的 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 之后,我仍然缺乏如何成功设置这些的答案。

任何人都可以提供信息、指南、链接方面的帮助吗?非常感激。

ubuntu php memcached

6
推荐指数
1
解决办法
1万
查看次数

数据库一次次被黑;已经为 SQL 注入清理了站点

我有一个客户让我尝试分析一个网站的漏洞。

发生的事情是,每个周末左右,数据库中一张表的一条记录的字段每次都会更改为相同的内容。从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>。它总是相同的记录这一事实让我认为它是某种自动脚本,但如果是,我找不到它。

已完成以下工作:

  • 修复 SQL 注入漏洞
  • 在 777 个目录中阻止 PHP 执行
  • 每次修复后更改数据库密码
  • 每次修复后更改 CMS 密码

下一步是什么?

mysql php hacking

6
推荐指数
1
解决办法
590
查看次数

如何从 VirtualDocumentRoot 更新我的 php DOCUMENT_ROOT 变量

我在我的虚拟主机配置中使用 VirtualDocumentRoot。

我的 VirtualDocumentRoot 设置为 /var/www/%1/,如果我创建一个文件夹说 test,它会按预期工作。问题是,当我在我的 php 文件中使用 $_SERVER["DOCUMENT_ROOT"] 时,它正在重新调整 /var/www。是否可以让 php 为 $_SERVER["DOCUMENT_ROOT"] 返回与 VirtualDocumentRoot 中配置的相同的路径。

php apache-2.2

6
推荐指数
1
解决办法
2505
查看次数

Apache 在生产环境中的 Windows 上?为什么不?

“每个人”都知道 Apache 适用于 Linux/Unix,而在 Windows 上 IIS 是必经之路。

但是,我不是 Linux 专家,如果在生产环境中使用与开发过程中使用的设置相同的设置,那将是一种极大的解脱。我是一名独立开发人员,我正在努力使事情尽可能简单。我已经摆脱了其他问题,例如存储(-> 云)电子邮件(-> 邮戳)。

那么,当我将 Apache 放在来自 Rackspace 的 Windows 虚拟专用服务器中并将其用作PHP 项目的主要生产环境时,可能会发生什么真正的缺点?与不必学习不同操作系统的可能性相比,获得更多 VPS 资源的钱并不是什么大问题。

预计不会出现超大流量。我的 PHP 项目也可以相当优化。有一些繁重的脚本,但仅适用于内部(登录)用户。所有其他的都可以或多或少地静态提供。

windows php scalability apache-2.2

6
推荐指数
1
解决办法
5992
查看次数

禁用 DNS 缓存 PHP

我需要在脚本中获取 DNS 的最新 A 记录。该脚本正在执行一些监视操作。DNS 记录的默认 TTL 为 5 分钟,但监控脚本每分钟运行一次。我正在使用 PHP 的函数 dns_get_record 来获取 A 记录,但我想知道是否有一种方法可以忽略 TTL 缓存并从 DNS 服务器中获取记录而不是缓存。

当然,有什么方法可以强制执行此操作,以便不适用网络级缓存,并且每次运行脚本时,它实际上都会命中 DNS 服务器?

感谢斯帕什·古普塔

domain-name-system php cache reverse-dns php5

6
推荐指数
1
解决办法
6780
查看次数