我正在考虑改用 Amazon EC2 来托管我的网站以处理更多流量。似乎我必须更新 DNS 记录以指向新服务器,但我想知道是否有办法避免必须等待新的 DNS 记录传播。将代码放在两个主机上对我来说不起作用,因为应用程序非常频繁地写入数据库。我想过只在旧主机上使用元重定向或 php 重定向来重定向到新主机 ip,但想知道是否有更好的更容易接受的方法。
当 PHP 在 Apache 中执行时,我们的一台旧式服务器没有进一步更新或重新配置,突然停止将主机名解析为 IP。但是,从 CLI 执行时它仍然可以正常工作。
从 RSS 缓存上次修改时间,我推断它在 3 月 28 日左右停止工作。
为了重现这个问题,我创建了一个脚本fsockopen(),上面写着“连接失败(错误号 2)”。我进一步将问题归结为与失败的名称解析有关:
<?php $addr = gethostbyname("twitter.com"); echo "ADDR($addr)"; ?>
Run Code Online (Sandbox Code Playgroud)
当我通过 Apache 运行它时,输出是ADDR(twitter.com),这是错误的。
当我从 CLI 运行它时,输出ADDR(aaa.bbb.ccc.ddd)具有不同的 IP 地址,正如预期的那样。
服务器设置上的任何内容都没有改变。CLI 和 Apache 模块共享相同的php.ini. PHP 是带有 Zend Optimizer v2.5.10 的 v4.4.9 版本。Apache 是 v1.3.31。
我知道这些版本是旧的。但是由于没有任何改变,像“先尝试升级版本”这样的解决方案是行不通的,因为服务器的功能集/版本控制被冻结并且很快就会被替换。我们仍然需要一个解决方案。
如果我运行dig脚本,它可以在两种环境(mod_php 和 CLI)中工作,但这不仅仅是一个丑陋的黑客,因为它会涉及整个脚本库中的许多编辑和测试,这也是不受欢迎的,因为服务器上的 PHP 应用程序是也被冻结,并且只接收安全更新。它将被完全重写(在新服务器上)所取代。
但是由于重写需要一些时间并连续替换遗留应用程序的部分,我们需要修复解析器问题。我已经用谷歌搜索了一下,虽然问题是已知的,但许多人没有找到解决办法。提高内存限制的修复不起作用。重新启动没有用。mod_php 中的解析器确实没有明显原因停止工作。:-(
更新:我同时通过完全停止 apache 来解决它,等待片刻,然后再次启动它。但这并不能解释这种行为的根本原因(因此没有令人满意的解决方案)。所以我把它打开。
我有自己的服务器(具有 root 访问权限)。
我需要访问我的网站等的用户的统计信息...
我看过一个叫做 Webalyzer 的应用程序……这是一个不错的选择吗?
我在 Ubuntu 9 系统上运行 apache2 ...
如果您知道任何用于服务器的优秀统计应用程序,请告诉我。
还有一个后续问题:所有统计信息都保存在日志文件中,对吗?那么这些日志文件会变得多大呢?拆分它们的可能性会很好,但不知道 Webalyzer 是否可以实现...
我的 cron 命令是“php -q PATH-TO-FILE”
我收到“/bin/sh: php: not found”错误。我应该使用什么路径来执行 PHP,或者我怎样才能找到?
更新
PHP5-cli 现在已安装。现在我知道/bin/sh: /var/lib/php5: Permission denied所有这些都以 root 身份运行
我有一台运行生产应用程序的 Debian Lenny 服务器。最近,一位顾问要求我们启用磁盘加密以确保数据安全。他认为全盘加密需要我们清理磁盘并从头开始设置服务器,因此加密 MySQL 和 Web 根文件的存储就足够了。
因此,我正在考虑创建一个新分区并将 apache 站点根目录与 MySQL 数据文件一起移动到那里,并使用一些包/工具对其进行加密。
现在,我的问题很简单:
感谢您的时间和帮助,提前致谢!
问候,
埃姆兰
我正在尝试在我的 CentOS 5/PHP 5.2.6 机器上使用 htscanner PECL 扩展,但在最新版本中存在一个错误,其中在每个php_value指令的末尾添加了换行符。这种行为会导致 myinclude_path和error_logvalues 不起作用。
该错误和补丁记录在 PECL 站点上:http : //pecl.php.net/bugs/bug.php? id= 16891
我已经下载了最新版本,应用了补丁,并重新压缩了包——但我无法让 PECL 安装程序接受它——或者任何本地包,就此而言。
我已经尝试pecl install了我能想到的所有语法变体,只有在我能够让它工作的时候,它首先下载一个在线副本并忽略本地副本。
谁能推荐一种从本地文件安装 PECL 扩展的方法?感谢您的考虑。
我有一个 FastCGI (mod_fastcgi) 问题。它每隔一段时间就会发生一次,并且不会导致服务器完全崩溃,只会出现 500 个错误。这里有几件事。首先我使用 APC,所以 PHP 可以控制它自己的进程,而不是 FastCGI。另外,我将 webroot 设置为:
/var/www/html
Run Code Online (Sandbox Code Playgroud)
还有里面的 fcgi-bin:
/var/www/html/fcgi-bin
Run Code Online (Sandbox Code Playgroud)
首先是 apache error_log:
[Fri Jan 07 10:22:39 2011] [error] [client 50.16.222.82] (4)Interrupted system call: FastCGI: comm with server "/var/www/html/fcgi-bin/php.fcgi" aborted: select() failed, referer: http://www.domain.com/
Run Code Online (Sandbox Code Playgroud)
我还在“fcgi-pm”过程中运行了 strace。这是它爆炸时的跟踪片段:
21725 gettimeofday({1294420603, 14360}, NULL) = 0
21725 read(14, "C /var/www/html/fcgi-bin/php.fcgi - - 6503 38*", 16384) = 46
21725 alarm(131) = 0
21725 select(15, [14], NULL, NULL, NULL) = 1 (in [14])
21725 alarm(0) = 131
21725 gettimeofday({1294420603, 96595}, …Run Code Online (Sandbox Code Playgroud) 我知道已经有人问过这个问题,但我要么不明白答案,要么不适用于我。
我有一个 php 脚本,我每 1 分钟调用一次,使用 CPanel 设置 Cron 作业。脚本的性质意味着它可能会超过一分钟,所以我需要知道如果第一个没有完成,如何停止下一个运行。
我有一个运行 CENTOS 5.5 的 VPS,可以访问 WHM 和 CPanel。我以前从未使用过 Linux(昨天才拿到服务器),所以我不知道我在做什么,如果可能的话,希望得到一些帮助。如果我需要提供更多信息,请告诉我(我目前不知道您需要什么信息)。
谢谢。
有没有办法获取当前正在攻击我的 VPS 的 PHP 脚本文件名?
例如,当我查看“顶部”时,我看到:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7622 itil 17 0 61388 11m 6004 R 45.8 2.3 0:00.13 php
7626 itil 17 0 58360 8632 5440 R 24.6 1.6 0:00.07 php
Run Code Online (Sandbox Code Playgroud)
如何找出特定时间 PHP 正在处理的文件?
我对 nginx 很陌生,而且 - 更多用于学习目的 - 我试图配置 Nginx,以便为每个子域使用不同的用户运行 php。
例如,我想将用户john用于所有脚本foo.example.com,用户jack用于bar.example.com.
我已经在我的系统(ubuntu 服务器)上创建了用户,但我不知道如何指示 nginx 使用这些用户 - 我正在寻找一种可以轻松处理许多用户的解决方案,比如 ~2000。
查看文档,我不明白是否必须php5-cgi为每个用户(使用不同的端口)生成一个进程,然后将它们抓取到我的sites-available站点中(正如我所说的我是新手,但这在我看来就像服务器自杀),并且 nginx 配置中仅有的 2 页讨论了这个……是用中文写的(page1 , page2),很难用 google translate 翻译(但是,查看代码,使用的方式完全不同server-suicide)
有什么建议吗?
更新
galador 的回答可以完成这项工作,但我正在尝试构建一个不需要为每个新站点重新启动 nginx/fpm 的 dinamycal 环境(带有通配符子域),这可能吗?