Articles of PHP

PHP脚本使用TAIL监视Apache Access日志文件

我写了一个PHP脚本来监控apache的access_log文件。 我正在使用以下命令; $path_to_tail = '/usr/bin/tail'; $path_to_access_file = '/var/log/httpd/access_log'; 错误日志显示:/ usr / bin / tail:无法打开用于读取的“/ var / log / httpd / access_log”:Permission denied 我在RHEL Linux发行版上。 改变了他人权限访问只有现在它的工作原理,我没有改变任何东西

PHP的UTF-8债券正则expression式不起作用

我有一个运行LAMP堆栈的最新更新的CentOS 6。 用户抱怨他的代码不起作用,他正在尝试使用unicode字符的preg_match。 这是代码不工作: $regex = '/\bøl\b/iu'; preg_match($regex, "han drikker øl for sjov", $matches); print_r($matches); 奇怪的是,这个确切的代码在其他服务器上工作得很好,我不能解决这个问题。 我已经尝试了几件事情: PCRE已安装,并且支持UTF-8 确保该文件实际上是UTF-8 试过设置mb_regex_encoding 我也读过这个问题,但是,它在没有这个的其他服务器上工作,就像我的例子 mbstring()已安装 PHP版本是5.3,是由yum供应商提供的软件包 此外,我刚刚从源头上手工构build的安装中进行了testing,并且在那里工作起来就像是一种魅力 – 但我宁愿不用手工构build软件包。 有什么build议么?

Cronjob在debian上不能正常工作

我想在午夜每天运行一个PHP脚本,所以我的cron有以下条目 @daily /usr/bin/php /websites/xxz/misc/wU5HaFre.php /websites/xxz/misc/wU5HaFre.php有755个权限,所以它是可执行的。 which php提供/usr/bin/php , whereis php provides php: /usr/bin/php /usr/bin/X11/php /usr/share/php /usr/share/man/man1/php.1.gz 那么怎么了? 它只是不执行。

一些(但不是全部)cron作业停止运行。 重新启动cron修复它,但是造成了什么?

我正在运行一个每分钟运行一次crontab的Ubuntu Server 10.04,这个文件中有很多工作。 每个作业都是一个PHP脚本来执行。 今天早些时候,似乎有些(但不是全部)脚本没有成功执行。 我检查了一下,cron还在报告中,但脚本仍然没有做好工作(尽pipe其他人)。 运行: sudo service cron restart …解决了问题,他们都开始了,但我需要知道发生了什么,以及如何防止它再次发生。 几个星期前,类似的事情发生了,所以我需要深究造成这种情况的原因。 我已经检查了/ var / log / syslog,并且在我认为发生的时候我能看到的唯一的事情是这样的: Feb 25 11:39:01 myusername CRON[10514]: (root) CMD ( [ -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) -delete) 据我所知,每小时运行一次,所以我不认为这是可能的嫌疑。 在整个日志中有一些munin条目,我不再使用,所以可以删除,如果这是一个嫌疑人。 唯一启用的自动更新是软件包列表 – 是否可能导致任何问题? 我的/etc/apt/apt.conf.d/10periodic文件如下所示: […]

loggingPHP脚本的执行时间和内存使用情况的正确方法是什么?

我想监视运行在Nginx + FPM上的Web应用程序的执行时间和内存使用情况。 为此,我在页脚中生成执行时间和内存数据。 我也可以将其插入到FPM错误日志文件中,稍后阅读: error_log("Performance Execution=$execution, Memory=$memory"); 从/var/log/php-fpm.log文件获取的数据如下所示: raijin log # tail -f php-fpm.log | grep "Performance" [02-Mar-2013 17:48:57] WARNING: [pool www] child 5546 said into stderr: "NOTICE: PHP message: Performance Execution=0.076794, Memory=11.276" [02-Mar-2013 17:48:58] WARNING: [pool www] child 5547 said into stderr: "NOTICE: PHP message: Performance Execution=0.075967, Memory=11.276" [02-Mar-2013 17:49:30] WARNING: [pool www] […]

如何启用错误日志logging以及IIS 8的错误日志在哪里?

我想捕获PHP错误和HTTP错误。 我已经在PHP中启用错误日志logging,但是我没有看到IIS 8中的哪个地方可以启用错误。 这可能吗? 感谢您的指导。

PHP:不能增加最大上传限制

我在Debian Squeeze上使用Apache + PHP 5.3.3-7,从版本库安装。 Debian Squeeze中的PHP发行包括Suhosin补丁。 我有问题上传文件大于cca 4 MB,一些不可见的限制,防止PHP接受上传。 在php.ini我有: 设置upload_max_filesize = 50M 设置post_max_size = 50M 设置memory_limit = 256M 设置max_execution_time = 120 设置max_input_time = 120 在suhosin.ini : suhosin.memory_limit = 256M suhosin.post.max_value_length = 50000000 suhosin.request.max_value_length = 50000000 suhosin.post.max_vars = 200000 suhosin.request.max_vars = 200000 我真的怀疑最后两个是重要的,但我被build议增加它们。 我知道确实PHP实际加载configuration值正确,因为phpinfo()符合我的期望。 我期望能够上传一个文件高达50MB,但上传4MB已经失败。 正常PHP每站点日志中没有logging错误。 而且我确定有足够的空间来保存上传的文件。 似乎有一些其他无形的限制,防止我上传文件。 这可能是什么? 也许Apache本身? 从来没有听说过这个限制。 我花了近一个星期的时间,而且我和客户一样绝望。 任何提示,欢迎。

TurnKey LAMP无法安装PHP GD Library

当我尝试在TurnKey LAMP设备上安装用于PHP的GD库时,出现以下消息: root@lamp ~# apt-get install php5-gd Reading package lists… Done Building dependency tree Reading state information… Done php5-gd is already the newest version. You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: php5-gd : Depends: libgd2-xpm (>= 2.0.36~rc1~dfsg) but it is not going to be installed […]

设置会话文件的默认权限

我如何设置会话文件的默认权限,以便Apache-php进程和一些其他用户的php进程可以rw他们呢? 会话是由一些其他用户的PHP进程创build的,之后,Apache的PHP进程应该能够读取和写入。 现在会话文件的默认权限是600.它应该是660或666.在哪里以及如何设置此权限(例如httpd.cond或php.ini)? 所以在session_start()之后每次都不需要使用chmod。 服务器是我自己的,所以没有必要为了安全的原因避免这种情况。 Apache版本是2.2.15,php是5.3.3,服务器是Centos6 64位。 因为第一个问题是:为什么你需要这个,我首先回答:我已经在服务器上构build了几个suphp的站点,逻辑是build立在这个,所以有几十个session_start()和所有php-进程是由某个特定用户拥有的。 我有一个getimage.php,加载图像,在一些页面上可以有几十或几百个缩略图在同一页(我想这样!)。 尽pipe我有100M的互联网,但由于每次调用getimage.php,页面加载速度都很慢,新的php进程已经启动。 getimage.php使用会话来限制用户访问特定的图像。 我testing了为php创build一个Apache处理程序,并为此使用不同的文件扩展名:getimage.apachephp。 加速是巨大的! 但问题是,我已经手动chmod会话文件,以允许apache-php进程访问会话文件。 而且我认为,如果chmod可以在每个会话文件创build时自动生成,那么这个过程就变得更有意义了。 编辑:一个可能的解决scheme是使用 session_save_path( “0; 666; /path/到/ sessfile”); 的umask(0); 在session_start(); 或者,如果你想避免666并使用更安全的660,则apache-user和suphp-user必须属于同一个组,例如。 web和会话之后创build将创build的会话文件组更改为web 。 为了简单,我select了666。

使它能够处理多个匹配的位置块

在我的nginx conf.d文件中,我有以下几点: location ~ \.php$ { try_files $uri = 404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ^~ /dev/ { fastcgi_param PHP_VALUE display_errors=On; } 我的目标就是让* .php在任何目录(包括/ dev /目录)中被PHPparsing,并且在/ dev /目录中将启用display_errors。 但似乎这些位置并不是在一起而是在一起。 因此,如果它匹配* .php,它会将其parsing为一个PHP文件,除非它位于/ dev /目录中。 我必须是多余的,并有PHPconfiguration代码重复两次,或者有一种方法,我可以避免这种冗余? 谢谢!