我的 PHP-CGI 无缘无故地开始提供空白页面,直到我重新启动该过程。
我想知道为什么。
不幸的是,PHP 的“生产”配置文件默认没有 error_log。我的 Nginx 错误日志也没有显示与 PHP 相关的错误。这可能是一个没有希望的案例,但我只是为了以防万一。
这是我的设置
任何想法可能导致错误?
更新
我想我已经隔离了这个问题。我一直在使用 Monit 在 PHP 开始空白时自动重新启动它。我的 PHP 错误日志是空白的。
但是我发现如果我禁用了一个名为 WP-SuperCache 的 Wordpress 插件,我的 PHP 将停止每大约 10 小时重置一次。到目前为止,我的 PHP 已经连续运行了 3 天。有没有人对此有任何建议?
作为 LAMP 盒的系统管理员,我被要求将 php/html 表单的上传容量提高到 70 MB 左右。我相信服务器可以处理它,因为它有两个四核和 4 Gig RAM。我也没有任何昂贵的带宽限制。因此,由于标准 php.ini 中的限制通常为 2MB,我想知道,在更改我的 upload_max_filesize 和 post_max_size 之前是否还有其他问题我应该考虑,或者我可以安全地使用它吗?
感谢您的任何提示!
我正在寻找有关如何扩展服务器设置的资源。
我们目前在英国有一台 Rackspace 专用服务器,其规格如下:
HPDL385_G2_PrevGen
HP 单双核 Opteron 2214 (2.2Ghz)
4GB RAM
RAID 1 中的 2x 10,000 SCSI 驱动器
我们每月的流量高达 550,000 个 UV。
该站点运行 PHP 和 MySQL 设置。数据库受到了绝对的打击,我们有许多复杂的查询加入 multilpe 表。
我们正在使用 APC 进行 PHP 缓存。
我已经到了尽可能多地进行数据库和查询优化的阶段,并想知道下一步应该是什么......
我看过memcache,但我的印象是他需要大量的RAM,最好是一个专用的盒子......
下一步就是拥有两个盒子;一个用于数据库,一个用于 Apache?或者有没有我忽略的步骤。
我们的负载通常在 2 标记左右,但现在它高达 20!
穆宁的一些图表:

我想向您询问您所知道的 PHP/Apache 配置方法,以及它们的优缺点。我自己开始:
---------------- PHP 作为 Apache 模块----------------
优点:速度快,因为您不需要每次都启动 exe,尤其是在mpm-worker模式下。您还可以在此模式下使用各种PHP 加速器,如 APC 或 eAccelerator。
缺点:如果您在 mpm-worker 模式下运行 apache,您可能会面临稳定性问题,因为任何 php 脚本中的每个故障都会导致该 apache 进程的整个线程池不稳定。同样在这种模式下,所有脚本都代表 apache 用户执行。这不利于安全。mpm-worker 配置需要在线程安全模式下编译 PHP。至少 CentOS 和 RedHat 默认存储库没有线程安全的 PHP 版本,因此在这些操作系统上,您至少需要自己编译 PHP(有一种方法可以在 Apache 上激活 worker mpm)。线程安全的 PHP 二进制文件的使用被认为是实验性的和不稳定的。另外,许多 PHP 扩展不支持线程安全模式,或者没有在线程安全模式下进行良好测试。
---------------- PHP 作为 CGI ----------------
这似乎是最慢的默认配置,它本身似乎是一个“骗局”;)
---------------- PHP 作为 CGI 通过 mod_suphp ----------------
优点:suphp 允许您代表脚本文件所有者执行 php scipts。这样您就可以安全地将同一台机器上的不同站点分开。此外,suphp 允许每个虚拟主机使用不同的 php.ini 文件。
缺点:CGI 模式下的 PHP 意味着较低的性能。在这种模式下,你不能使用像 APC 这样的 php 加速器,因为每次产生新进程来处理脚本时,前一个进程的缓存都没用。顺便说一句,你知道在这个配置中应用一些加速器的方法吗?我听说了一些关于将 shm 用于 …
我看到我的“/tmp”目录(一台 CentOS 机器)中有数千个文件,而且几乎所有文件都是 PHP 会话文件。
我担心这可能对我的系统产生影响。
这些文件是否曾经被操作系统、Apache 或 PHP 删除过?还是我必须自己照顾?
当您 ./configure PHP 时,究竟什么是 --enable-zend-multibyte 选项?
是否可以在不重新编译php的情况下安装pcntl模块?我正在尝试在 CentOS 上进行设置。
我在 Ubuntu Hardy 上安装了 nginx 并立即意识到 PHP 脚本正在获取空的请求数组,即无论 GET 还是 POST 都没有通过,甚至 $_REQUEST 数组也是空的。
当我切换回 Apache 时一切正常。
安装nginx版本为0.6.35-0ubuntu1.1~hardy1,PHP为PHP Version 5.2.4-2ubuntu5.10。
可能有什么问题?
我试图在 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 无济于事,并且每次尝试加载页面时它都会更改。另外,我在任何地方都找不到关于 …