标签: php

无需等待 DNS 传播即可将域转换为新的 Web 主机

我正在考虑改用 Amazon EC2 来托管我的网站以处理更多流量。似乎我必须更新 DNS 记录以指向新服务器,但我想知道是否有办法避免必须等待新的 DNS 记录传播。将代码放在两个主机上对我来说不起作用,因为应用程序非常频繁地写入数据库。我想过只在旧主机上使用元重定向或 php 重定向来重定向到新主机 ip,但想知道是否有更好的更容易接受的方法。

domain-name-system hosting php web redirect

4
推荐指数
1
解决办法
1504
查看次数

PHP:在 Apache 中运行时,gethostbyname() 突然不再将名称解析为 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 来解决它,等待片刻,然后再次启动它。但这并不能解释这种行为的根本原因(因此没有令人满意的解决方案)。所以我把它打开。

domain-name-system php mod-php apache-2.2

4
推荐指数
1
解决办法
5437
查看次数

我应该为我的网站使用什么统计应用程序?

我有自己的服务器(具有 root 访问权限)。

我需要访问我的网站等的用户的统计信息...

我看过一个叫做 Webalyzer 的应用程序……这是一个不错的选择吗?

我在 Ubuntu 9 系统上运行 apache2 ...

如果您知道任何用于服务器的优秀统计应用程序,请告诉我。

还有一个后续问题:所有统计信息都保存在日志文件中,对吗?那么这些日志文件会变得多大呢?拆分它们的可能性会很好,但不知道 Webalyzer 是否可以实现...

mysql security php database html

4
推荐指数
3
解决办法
232
查看次数

无法通过 cron 执行 PHP

我的 cron 命令是“php -q PATH-TO-FILE”

我收到“/bin/sh: php: not found”错误。我应该使用什么路径来执行 PHP,或者我怎样才能找到?

更新

PHP5-cli 现在已安装。现在我知道/bin/sh: /var/lib/php5: Permission denied所有这些都以 root 身份运行

ubuntu php

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

Debian 中的磁盘加密

我有一台运行生产应用程序的 Debian Lenny 服务器。最近,一位顾问要求我们启用磁盘加密以确保数据安全。他认为全盘加密需要我们清理磁盘并从头开始设置服务器,因此加密 MySQL 和 Web 根文件的存储就足够了。

因此,我正在考虑创建一个新分区并将 apache 站点根目录与 MySQL 数据文件一起移动到那里,并使用一些包/工具对其进行加密。

现在,我的问题很简单:

  1. 我的计划是正确的还是有更好的解决方案?
  2. 对于这种情况,我应该注意哪个包/工具?
  3. 如果这是要遵循的方法,我该如何将 MySQL 数据文件夹移动到新分区?

感谢您的时间和帮助,提前致谢!

问候,

埃姆兰

mysql php encryption debian-lenny

4
推荐指数
1
解决办法
1546
查看次数

如何安装自定义(修补)PECL 扩展?

我正在尝试在我的 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 扩展的方法?感谢您的考虑。

php centos pecl

4
推荐指数
1
解决办法
2397
查看次数

FastCGI 和 Apache 500 间歇性错误

我有一个 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 fastcgi 500 mod-fastcgi apache-2.2

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

如果已经在运行,不要运行 cron 作业

我知道已经有人问过这个问题,但我要么不明白答案,要么不适用于我。

我有一个 php 脚本,我每 1 分钟调用一次,使用 CPanel 设置 Cron 作业。脚本的性质意味着它可能会超过一分钟,所以我需要知道如果第一个没有完成,如何停止下一个运行。

我有一个运行 CENTOS 5.5 的 VPS,可以访问 WHM 和 CPanel。我以前从未使用过 Linux(昨天才拿到服务器),所以我不知道我在做什么,如果可能的话,希望得到一些帮助。如果我需要提供更多信息,请告诉我(我目前不知道您需要什么信息)。

谢谢。

linux php cron

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

哪个 PHP 脚本使我的 VPS 过载?

有没有办法获取当前正在攻击我的 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 正在处理的文件?

linux php vps top

4
推荐指数
1
解决办法
966
查看次数

如何配置 nginx+php (fcgi) 以使用不同的用户运行每个子域?

我对 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 环境(带有通配符子域),这可能吗?

php nginx user-management fastcgi

4
推荐指数
1
解决办法
7233
查看次数