启用 APC 导致内部服务器错误

Vic*_*rez 5 php centos fastcgi

安装并启用 APC 3.1.9(备用 PHP 缓存)后,使用pecl,我遇到了内部服务器错误。我检查了我的错误日志,这就是显示的内容。

错误日志:

PHP Fatal error:  PHP Startup: apc_mmap: mkstemp on /tmp/apc.efdb4d failed: in Unknown on line 0
[Wed Jul 06 23:47:41 2011] [error] mod_fcgid: process /var/www/cgi-bin/cgi_wrapper/cgi_wrapper(22397) exit(communication error), get unexpected signal 11
Run Code Online (Sandbox Code Playgroud)

我没有将 APC 扩展名添加到我的php.ini文件中,而是在 中创建了一个apc.ini文件/etc/php.d/,这是我当前的 APC 配置

apc.ini 配置:

; /etc/php.d/apc.ini

extension = apc.so

apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 128M
apc.optimization = 0
apc.num_files_hint = 4096
apc.ttl = 7200
apc.user_ttl = 7200
apc.gc_ttl = 0
apc.cache_by_default = 1
apc.filters = ""
apc.mmap_file_mask = "/tmp/apc.XXXXXX"
apc.slam_defense = 0
apc.file_update_protection = 2
apc.enable_cli = 0
apc.max_file_size = 10M
apc.stat = 1
apc.write_lock = 1
apc.report_autofilter = 0
apc.include_once_override = 0
;apc.rfc1867 = 0
;apc.rfc1867_prefix = "upload_"
;apc.rfc1867_name = "APC_UPLOAD_PROGRESS"
;apc.rfc1867_freq = 0
apc.localcache = 0
apc.localcache.size = 512
apc.coredump_unmap = 0
apc.stat_ctime = 0
Run Code Online (Sandbox Code Playgroud)

即使在禁用 APC 后,我在尝试登录 Plesk CP 时也遇到了另一个错误:

ERROR: Zend_Db_Statement_Exception
SQLSTATE[HY000]: General error: 1 Can't create/write to file '/tmp/#sql_6d7_0.MYI' (Errcode: 13)
Run Code Online (Sandbox Code Playgroud)

我通过 Plesk 的电源面板重新启动我的容器解决了上述问题。我认为它必须更改/tmpexecusingmount -o remount,exec /tmp来解决通过pecl. 安装完成后,我返回/tmpnoexec. 可以在此处找到这些步骤的要点。

第一个错误仍未解决。

我目前正在运行:

  • CentOS 5.6
  • PHP 5.3.5
  • 快速CGI
  • 已安装 APC 3.1.9

我不知道如何解决这个问题。是不是因为我使用的是最新版本的 APC?还是apc.ini配置?我在何处启用 apc 扩展是否重要?即/etc/php.ini/etc/php.d/apc.ini

FastCGI 和 APC 兼容性问题如何?

任何帮助或建议将不胜感激。

小智 2

你有 open_dir 限制吗?如果这是在用户帐户上,我将设置 APC 的 tmp 目录相对于具有适当权限的用户主目录。