我有一个使用 PHP 会话进行身份验证的站点。有一个我想限制访问的目录,它不使用任何 PHP,它只是充满了静态内容。
我只是不知道如何在没有每个请求都通过 PHP 脚本的情况下限制访问。有什么方法可以让 Apache 检查会话凭据并限制访问,如基本身份验证?
我必须在我的 CentOS 服务器上安装 PHP 5.3。如果我这样做yum install php,基础存储库会安装 5.1.6,这对于我需要安装的应用程序来说太旧了。所以我一直在尝试使用IUS存储库,遵循IUS的官方说明:
root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm
root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm
Run Code Online (Sandbox Code Playgroud)
好的。现在我只是做yum install php53, 等等 我需要的一切......但我收到了这个错误:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Check Error:
file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/share/man/man1/php.1.gz from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from …Run Code Online (Sandbox Code Playgroud) 我很快就会为我即将启动的应用程序购买一堆服务器,但我担心我的设置。我很感激我得到的任何反馈。
我有一个应用程序,它将使用我编写的 API。其他用户/开发人员也将使用此 API。API 服务器将接收请求并将它们中继到工作服务器。该 API 将仅保存用于日志记录、身份验证和速率限制的请求的 mysql 数据库。
每个工作服务器都做不同的工作,并且在未来扩展时,我将添加更多工作服务器来处理工作。API 配置文件将被编辑以记录新的工作服务器。工作服务器将进行一些处理,有些会将图像的路径保存到本地数据库,以便稍后由 API 检索以在我的应用程序上查看,有些将返回处理结果的字符串并将其保存到本地数据库.
你觉得这个设置有效吗?有没有更好的方法来重构它?我应该考虑哪些问题?请看下图,希望能帮助理解。
我试图在 Windows 服务器上的 php.ini 中为我的 php open_basedir 配置值使用多个路径。
我正在使用的线路是:
open_basedir = E:/Websites;C:/PHP/includes/
Run Code Online (Sandbox Code Playgroud)
不幸的是,它忽略了第二个条目。每当我尝试在 C:/PHP/includes 目录中执行代码时(这个例子恰好是 PHPUnit),我得到
PHP 警告:require():open_basedir 限制生效。文件(C:\PHP\includes\PHPUnit\PHPUnit-3.6.10\PHPUnit\Autoload.php) 不在允许的路径内 : (E:/Websites) in C:\PHP\includes\PHPUnit\PHPUnit -3.6.10\phpunit.php 第 41 行
请注意,它甚至没有显示路径列表中的第二项。谁能发现我哪里出错了?
我认为分号 (;) 表示注释是否正确?如果是这样,我如何分隔条目,因为手册没有说清楚
我被要求启动一个别人建立的网站。这是一个需要 Memcached 才能运行的 Wordpress 商店站点,我一直在让 Memcached 和 memcache php 插件在我的本地服务器上运行时遇到问题。在安装 memcached 和 memcache PHP 插件之前,我会收到这个错误:
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Run Code Online (Sandbox Code Playgroud)
现在我已经安装了 memcached 和 memcache PHP 插件(通过 Homebrew),我得到一个“没有收到数据”页面,并在我的 Apache 错误日志中得到这个错误:
dyld: lazy symbol binding failed: Symbol not found: _mmc_queue_pop
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
Expected in: flat namespace
dyld: Symbol not found: _mmc_queue_pop
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
Expected in: flat namespace
[Sat May 05 16:38:27 2012] [notice] child pid 26491 exit signal Trace/BPT trap (5)
Run Code Online (Sandbox Code Playgroud)
我尝试在活动监视器中查找该 pid 无济于事,并且每次尝试加载页面时它都会更改。另外,我在任何地方都找不到关于 …
我的 CentOS 网络节点(LAMP 堆栈)的 CPU 使用率高,但内存使用率低。几乎所有的进程都是apache。我知道我可以添加额外的 web 节点,直到我的 cpu 使用变得合理,但我想这里有一些快速调整技巧可能会有很长的路要走。
CPU 在 90-100% 之间反弹。Mysql 在 5% 到 45% 之间反弹。Apache 弥补了其余部分。
最佳:
top - 21:15:49 up 46 days, 20:39, 4 users, load average: 34.17, 44.62, 51.03
Tasks: 133 total, 32 running, 101 sleeping, 0 stopped, 0 zombie
Cpu(s): 90.4%us, 9.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 8388608k total, 6116448k used, 2272160k free, 84160k buffers
Swap: 16777208k total, 68k used, 16777140k free, 3488044k cached
PID USER PR NI VIRT RES SHR …Run Code Online (Sandbox Code Playgroud) 我正在将许多站点从旧服务器配置迁移到新服务器配置。每个站点都基于类似(但遗憾的是不完全相同)的代码库,使用 mod_rewrite URL。
大多数情况下都像魅力一样工作,但在新配置中 $_SERVER['REDIRECT_URL'] 不再设置,并且代码由于依赖于这个全局变量而失败。
据我了解,当发生重定向时,该变量由 Apache 设置。显然现在这不会发生,但我正在努力寻找原因。
我真的不想在每个站点上编辑代码,所以我会在必要时设置一个全局 PHP auto_prepend,但理想情况下我想修复服务器配置并首先设置它。
可能相关:我现在还有几个新的 $_SERVER 变量,即 REDIRECT_SCRIPT_URL 和 REDIRECT_REDIRECT_SCRIPT_URL。这些似乎具有我想要的 REDIRECT_URL 的正确数据,但似乎也表明发生了两个以前没有的内部重定向 - Google 搜索 REDIRECT_REDIRECT_SCRIPT_URL 仅返回随机 var_dump 输出。SCRIPT_URL 是新的 REDIRECT_URL 吗?
再次检查 REDIRECT_URL 已(现在)设置,但始终设置为“index.php”(mod_rewrite 目标)而不是预期的键入 URL。我已经使用 PHP auto_prepend_file 来手动设置所需的变量。
我不确定我是如何在第一轮错过它的,但在此期间我做了一些更改,所以我认为它不存在的外部机会。如果这误导了任何人,我们深表歉意。
为了解决下面提到的 ErrorDocument,使用的 mod_rewrite 规则是:
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
$_GET['url'] 变量已设置,因此规则必须有效。 …
我正在尝试为 Wordpress 站点配置服务器。我应该使用什么来缓存操作码?APC、xcache 还是 eAccelerator?
我使用 proxy_fcgi 在 Apache 2.4 上设置了 PHP-FPM,一切正常,但是 4-6 个请求中的每个请求,Apache 都会返回一个空白页面。这发生在我的主站点http://danielhe.com/ 上,但不是子域 vhosts。
这会显示 Apache 的错误日志,[client x] AH01070: Error parsing script headers
最终,有时 Apache segfaults AH00052: child pid 9740 exit signal Segmentation fault (11)
通过多次刷新页面,我可以很容易地重现“错误解析脚本标题”,但是在几次“错误解析脚本标题”之后,段错误会随机发生
更新 我找到了段错误的修复程序,并且 WSOD 显然已自行修复。mod_deflate 有一些问题,但是 Apache 文档中的这个配置修复了它
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Run Code Online (Sandbox Code Playgroud) 我正在测试使用nginx/php5-fpm, 与代码
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
// also tested: header("Status: 404 Not Found");
echo $_SERVER["SERVER_PROTOCOL"];
Run Code Online (Sandbox Code Playgroud)
并强制在命令中使用HTTP 1.0curl。
curl -0 -v 'http://www.example.com/test.php'
> GET /test.php HTTP/1.0
< HTTP/1.1 404 Not Found
< Server: nginx
< Date: Sat, 27 Oct 2012 08:51:27 GMT
< Content-Type: text/html
< Connection: close
<
* Closing connection #0
HTTP/1.0
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已经在请求使用HTTP 1.0,但是 nginx 回复我HTTP 1.1
赏金
@MaximDounin,@MichaelHampton 已经为规范提供了答案,谢谢。我正在为未来的读者扩展这个问题:
问:当客户端请求 HTTP 1.0 时,响应 HTTP 1.1 的优势是什么?谷歌采取的方法不应该更合理,即当客户端请求 1.0 时,用 1.0 …
php ×10
apache-2.2 ×4
php-fpm ×3
centos ×2
apache-2.4 ×1
http ×1
httpd ×1
iis ×1
lion ×1
mac ×1
memcache ×1
memcached ×1
memory ×1
mysql ×1
nginx ×1
performance ×1
web-server ×1
windows ×1
xcache ×1