安装并启用 APC 3.1.9 (Alternate PHP Cache) 后,使用 时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
我没有将 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
即使禁用 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)
我通过 Plesk 的 Power Panel 重新启动容器解决了上述问题。我认为必须改为/tmp
使用exec
来mount -o remount,exec /tmp
解决 APC 安装过程中的权限错误pecl
。安装完成后,我返回/tmp
到noexec
。这些步骤的要点可以在这里找到这里。
第一个错误仍然没有解决。
我目前正在运行:
- 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 兼容性问题怎么样?
任何帮助或建议都将不胜感激。
答案1
您是否已实施 open_dir 限制?如果这是在用户帐户上,我会设置 APC 的 tmp 目录相对于用户主目录的适当权限。