Articles of PHP

在作业服务器和主pipeclosures后,Gearman工作人员仍在运行

我已经closures了Gearman,使用(echo shutdown; sleep 0.1)| netcat 127.0.0.1 4730 -w 1命令。 我也停止了使用/etc/init.d/supervisord stop的主pipe。 但是,当我运行ps -aux时,还有Gearman工作正在运行(即/ usr / bin / php gearmanworker.php)。 如果我试图杀死工人,之后会立即产生一个新的工人。 有没有其他数据库或我必须擦拭正确closuresGearman及其工作人员? 任何帮助非常感谢 – 谢谢!

在虚拟应用程序中的IIS7.5上configurationWordPress重写规则

我必须将WordPressconfiguration为运行在ASP.NET 2.0 Classic模式下的主要网站下的虚拟应用程序。 一切工作正常,PHP 5.3.13 / MySQL 5.1 / IIS 7.5,WordPress的网站也工作正常,除了重写方面。 这个博客是在www.mysite.com/blog的主机,通常重写应改写为www.mysite.com/blog/categorie/this-is-a-pretty-article,而是改写为www.mysite.com/。博客类别/这是一个漂亮的文章,正如你所看到的,它剥夺了博客和类别之间的标签,这是不合适的。 web.config中的重写规则非常直接,从自动生成的WordPress的永久链接部分: <rewrite> <rules> <clear /> <rule name="wordpress" patternSyntax="Wildcard" stopProcessing="false"> <match url="*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" appendQueryString="true" /> </rule> </rules> </rewrite> 我已经失去了一整天,所以我强硬要求这可能是一个好主意。 有人在IIS上有wordpress的麻烦吗? 提前致谢

Apache将.html,.php文件显示为.txt

我有public_html(index.html)文件。 当我进入主页时,它给了我“Apachetesting页”。 当我尝试添加链接到他们手动(domain_name / index.html或index2.php)它给我只有代码,如在.txt编辑器。 我真的很感激任何帮助。

Nginx的子目录Drupal +其他应用程序

我有一个Drupal应用程序和其他2个应用程序写在PHP中,我想使用重写Uri的Drupal,并将Drupal的虚拟根/另一个由他们的名字…并使用服务器caching的每个应用程序的IMG。 例如: xxx.com或xxx.com/ – > /var/www/xxx.com/drupal/ xxx.com/app1或xxx.com/app1/ —-> /var/www/xxx.com/app1/ xxx.com/app2或xxx.com/app2/ —-> /var/www/xxx.com/app2/ 我已经testing:别名,根在每个位置,条件$ request_uri,单独的configuration…总是一个错误:IMGpath,PHPpath,所有应用程序或Drupal之一404 所以我真的迷路了 这里testing(也许有些好东西): # enforce www if ($host !~* ^(www)) { rewrite ^/(.*)$ $scheme://www.$host/$1 permanent; } location / { root /var/www/gplaza.cl/Drupal; index index.php index.html; if (!-f $request_filename) { rewrite ^(.*)$ /index.php?q=$1 last; break; } if (!-d $request_filename) { rewrite ^(.*)$ /index.php?q=$1 last; […]

PHP在周一到周五的同一时间点击100%CPU并吃掉RAM

我们在英国为小学开设了一个学习平台,并且运行得非常好。 然而在星期一到星期五的下午四点左右,我们看到同样的问题出现–1-2个PHP线程会跳到100%的CPU,并逐渐开始吞噬内存,直到服务器崩溃。 我们的请求中有98%是HTTPS,它们进入我们的第7层负载均衡器,然后解密SSL数据,添加X-HTTP-Forwarded-For头并将数据转发到应用服务器(我们有2个时刻)。我们的应用服务器在端口80上有Varnish,它接受来自负载均衡器的请求,并将请求通过端口81传递给Nginx。然后Nginx会计算出需要使用哪个“虚拟主机”,并通过任何PHP处理通过在套接字上监听的PHP-CGI(通过spawn-fcgi进行pipe理)。 有一个Memcached的实例也在运行,MySQL运行在一个单独的服务器/从属设置上。 在整个一天中,任何应用服务器的负载通常不会高于0.8,但是在下午4点左右,我们会遇到问题。 当他们引发问题时,我设法在一些实际的线程上运行strace ,而且我总是看到相同的东西: stat("/usr/share/zoneinfo/Europe/London", {st_mode=S_IFREG|0644,st_size=3661, …}) = 0 stat("/usr/share/zoneinfo/Europe/London", {st_mode=S_IFREG|0644,st_size=3661, …}) = 0 这是无限的重复,永远不会停止,直到你SEGKILL过程或oomkiller杀死它。 当时没有计划运行的cron作业,而且我也没有办法看到Nginx请求与正在运行的PHP进程关联的是什么。 我们正在运行PHP 5.3.14,我们从上周的5.3.8升级到排除旧版本的问题。 这个问题已经持续了几个月,我们不知道是什么原因造成的。 我们非常频繁地部署我们的软件,所以很难find可能引发问题的特定版本 – 尤其是因为我们不知道这个问题首次发生的date。 Varnish是3.0.1版本,Nginx是1.0.6(据我所知现在大概有一岁了),我们的服务器运行的CentOS版本5.7(最终),他们有3.07Ghz英特尔i3 540s和8GB内存。 Debian邮件列表上有关于非常相似的东西的讨论,你可以在这里find。 有没有人在过去看过这样的事情,有没有人有任何想法或build议? 有没有办法将一个Nginx请求直接链接到一个PHP线程? 有没有更好的方法来看看PHP过程在做什么? (我见过GDB提到,但我将不得不重新编译PHP) 谢谢!

PHP的MySQL扩展无法正常工作

在Debian服务器中,在安装和删除SquirrelMail(一些降级和升级php5,mysql …)之后,PHP的MySQL扩展已经停止工作。 我已经安装了php5-mysql,当我尝试通过php-cli连接到数据库时,我连接成功,但是当我尝试从Apache服务器连接时,我无法连接。 这个脚本,由php5-cli运行: echo phpinfo(); $link = mysql_connect('localhost', 'user, 'password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); 打印phpinfo,其中包括“/etc/php5/cli/conf.d/mysql.ini”,以及所有configuration的MySQL部分:SOCKET,LIBS …然后打印“Connectes successfully”。 但是当通过web浏览器访问的apache运行时,它显示phpinfo,其中包括“/etc/php5/apache2/conf.d/mysql.ini”,但MySQL部分丢失,并且脚本死亡打印“致命错误:调用未定义的函数mysql_connect()“。 请注意,“/etc/php5/cli/conf.d/mysql.ini”和“/etc/php5/apache2/conf.d/mysql.ini”实际上是相同的configuration,因为我已经在debian的结构: /etc/php5/apache2 /etc/php5/cgi /etc/php5/cli /etc/php5/conf.d 而且都指向同一个目录: /etc/php5/apache2/conf.d -> ../conf.d /etc/php5/cli -> ../conf.d /etc/php5/conf.d/mysql.ini由一行组成: extension=mysql.so 所以我的问题是:为什么PHP的MySQL扩展不能正常工作,如果我的configuration包含在php-cli中,正在工作? 非常感谢!

php.ini上的设置被忽略

我不能让我的服务器服从php.ini的设置(我试图改变memory_limit和upload_max_filesize )。 据我所知,我正在编辑正确的文件。 phpinfo()给出: Loaded Configuration File /etc/php.ini 文件权限是644 。 /etc/php.d还有一些额外的.ini文件,但是没有包含任何我想改变的密钥。 无论我做什么, phpinfo都会在“本地”和“主”列中报告默认值。 我也扫描了我的Apacheconfiguration文件,但没有发现任何与PHP相关的内容(除了加载PHP模块)。 我能够改变这些设置的唯一方法是通过添加一些php_value行到我的.htaccess 。 有什么明显的我失踪? 这是一个虚拟服务器,我可以用sudo执行root命令。 我正在运行Apache 2.1.3和PHP 5.3.3。 系统信息(来自uname -a )是: Linux sesctbapp01 2.6.18-308.1.1.el5 #1 SMP Wed Mar 7 04:16:51 EST 2012 x86_64

configurationNginx和php5-fpm以使用Codeigniter

正当我试图从Apache 2切换到Nginx时,我遇到了许多问题,并且仍在修复它们。 无论如何,我试图让他们工作,但没有运气。 所以我在这里寻求帮助/以前的经验。 我使用默认的configuration来运行PHP,并且只在运行PHP文件时效果很好。 但不幸的是,codeigniter的URL不会以* .PHP结尾。 所以我认为PHP-FPM不会将我的脚本当作PHP文件,因为URL不会以*.PHP 。 我只是猜测。 那么,有没有什么办法让他们工作? 对我来说似乎是不可能的,我尝试了很多configuration(在修改它们以适应我的环境,ofcource之后),但是它们中没有一个与Codeigniter一起工作。 希望张贴我目前的configuration,正常的PHP文件的作品,将导致一些解决scheme。 注意:这与Nginx的Codeigniter框架的wiki页面中的内容完全相同。 server { server_name _;#_ to catch all requests. root /usr/share/nginx/www; index index.html index.php; # set expiration of assets to MAX for caching location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { expires max; log_not_found off; } location / { # Check if a file exists, or […]

.php文件请参阅Apache环境variables,.html文件不要

考虑这个环境: $ cat .htaccess AddType application/x-httpd-php .php .html SetEnv Foo Bar $ cat test.php <?php echo "Hello: "; echo $_SERVER['Foo']; echo $_ENV['Foo']; echo getenv('Foo'); ?> $ cat test.html <?php echo "Hello: "; echo $_SERVER['Foo']; echo $_ENV['Foo']; echo getenv('Foo'); ?> 这是test.php的输出: Hello BarBarBar 这是test.html的输出: Hello 为什么会这样? 我该如何解决? 这里是phpinfo.php : http : //pastebin.com/rgq7up61 这里是phpinfo.html : http : […]

PHP unlink()删除文件的用户没有权限

这里有一个很远的地方,但是我想我会看到有没有人有这个问题的解决办法: 我有一个问题,PHP函数unlink()即使显式拒绝NTFS权限已被应用到有问题的文件,也能够成功删除文件。 我甚至尝试删除所有的NTFS文件权限等 – 相同的结果,它让我难住。 FACTS 我有在Windows Server 2008 R2上运行PHP 5.4.5的Apache 2.2.22 Apache / PHP在用户EXODUS \ wwwuser下运行,通过在运行PHP脚本的命令行中响应'whoami'来validation – 例如: echo exec('whoami'); 返回EXODUS\wwwuser 文件'deleteme.txt'是由'BUILTIN \ Administrators'组的成员创build的,明确拒绝权限被应用于文件EXODUS \ wwwuser – 但是,PHP的unlink()函数成功删除文件。 我已经尝试删除此文件的权限inheritance,删除所有权限(包括系统),并应用EXODUS \ wwwuser显式拒绝'完全控制' – 猜测什么,unlink()仍然删除文件同样的事情… EXODUS \ wwwuser是BUILTIN \ Users的成员,但这并不表示这会影响情况。 以交互方式login时,不能通过EXODUS \ wwwuser删除文件。 当用PHP编写文件时,文件所有者是“EXODUS \ wwwuser” 有没有人有这个想法? 我将如何去提供不能通过位于定义的“open_basedir”区域内的PHP的unlink()在一个位置删除的文件夹/文件? 我正在使用'open_basedir'来停止脚本篡改声明的open_basedir之外的文件 – 这似乎工作正常 – 例如:不能删除'open_basedir'定义的位置以外的文件。