Articles of PHP

phpinfo不报告PDO MySQL驱动程序的值

根据标题,我遇到了PHP 5.2.10的问题,并获得了PDO MySQL的认可。 我的configuration命令包含'–enable-pdo=shared' '–with-pdo-odbc=shared,unixODBC,/usr' '–with-pdo-mysql=shared,/usr' '–with-pdo-pgsql=shared,/usr' '–with-pdo-sqlite=shared,/usr' 并且pdo_mysql.so文件在extension_dirvariables指示的文件夹中可用,我已经添加了 extension=pdo.so extension=pdo_sqlite.so extension=sqlite.so extension=pdo_mysql.so 到php.ini,并且在php.d文件夹中有用于pdo驱动程序的ini文件,但phpinfo报告PDO支持已启用,但驱动程序值设置为no value 。 我在CentOS上用Nginx,PHP 5.2.10 我有点卡住了,你的帮助将不胜感激

分配一个memcache数组的php会话负载

直到最近,我们的设置包括4个networking服务器共享会话到单个运行memcache的服务器。 我们托pipe在亚马逊云上,并在连续两天的高峰负载中发生崩溃。 问题是memcache服务崩溃了(我们网站的负载一直在稳步增长)。 所以我们采取了以下措施: 1)增加了2个用于存储会话的服务器 2)在所有Web服务器的php ini文件中设置以下variables session.save_handler = memcache session.save_path = tcp://ip1.port, tcp://ip2.port, tcp://ip3:port memcache.hash_strategy = consistent memcache.allow_failover = 1 事情正在按顺序运行。 为了确保可用性,我们尝试通过随机杀死我们的一个会话服务器进行testing,并且网站继续运行(有些用户已经注销,目前商业上可以接受)。 但是有一个主要问题。 我预计memcache服务器上的负载或多或less是平均分配的。 但它不是! 如果我在CloudWatch中查看“Max Network Out(Bytes)”,则可以看到负载大致是10:5:1的比例。 换句话说,In和Outnetworking带宽明智,第一台服务器是第三台服务器的10倍。 而第二台服务器是第三台服务器的5倍。 有任何想法吗?

lighttpd和mod_proxy与PHP

我正在尝试使用lighttpd,一些自定义Ruby代理,rails / ramaze(在Thin上运行)和PHP的组合来创build相当复杂的设置。 目前它是这样设置的: 浏览器发出点击lighttpd前端的请求。 lighttpd是用mod_proxy设置的,将这个请求路由到我自定义devise的许多Ruby代理之一。 proxy.balance = "fair" proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 9090 ), ( "host" => "127.0.0.1", "port" => 9091 ) ) ) 该请求被转发到其中一个Ruby进程,然后打开一个新的连接到运行应用程序的许多瘦实例之一。 它使用了一些负载均衡魔术以及一组networking服务器。 瘦实例生成页面,将其发送回代理,代理将该页面发回给lighttpd,由lighttpd将其提供给浏览器。 我的问题是,鉴于上述体系结构,将PHP支持添加到此群集中的最佳方式是什么? PHP需要在Ruby代理之后运行,这样我就可以区分PHP和Ruby请求,并将它们路由到正确的位置,但是我找不到适用于PHP的精简型服务器。 我应该手动启动群集上的php-cgi,然后添加FCGI支持到我的Ruby代理? 还是应该在每台服务器上启动一个新的lighttpd实例来专门生成PHP页面(我觉得这与使用Ruby的瘦模型最接近,但是担心开销和缺乏控制)。 请记住,每个应用程序都需要入侵它自己的* nix帐户,一些应用程序在多个服务器上占用10多个帐户。 我还需要一种方法来正确地限制PHP应用程序使用的服务器资源的数量(也许通过每个* nix acount启动一个或两个php-cgi实例?)。

内容编码在使用PHP的新的IIS 7服务器上出现错误

我最近将一个PHP(Cake框架)开发站点从IIS 6(x86)服务器移动到IIS 7服务器(x64)。 内容都是一样的,URL重写的作品,但试图显示第一页,我得到这个错误: Error 330 (net::ERR_CONTENT_DECODING_FAILED): Unknown error. Firefox将此标识为 Content Encoding Error The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression. PHP页面正在使用Gzip (ob_start("ob_gzhandler"))但是注释掉这行并没有做任何事情。 IIS的安装几乎是一个干净的安装,我从来没有设置任何压缩选项,是否有任何设置在IIS或代码错误,会导致此? 相同的确切代码在IIS 6服务器上工作。 我听说这是由PHP尾随空白引起的,但如果是这样的话,IIS 6服务器不应该有同样的问题? 我试过的浏览器是Firefox 5,最新的Chrome和IE8,但它不是浏览器端的问题。

将PHP应用程序从Windows Server 2003迁移到Linux时遇到的文件名编码问题

我有几个实际运行在Windows 2003 Server上的PHP应用程序。 因为他们实际上在Windows上使用PHP,Mysql甚至是Apache,所以这个项目将把他们转移到一个新的Linux服务器上(基于Debian)。 但是当用'特殊字符'(非ASCII文件,如éèàç)用于文件名(这是法文中的常规)时,我遇到了用户上传文件的问题。 例如文件“accuséréception.pdf”存储如下: $ ls accus? r?ception.pdf 当我在Linux服务器上传一个新文件的时候,似乎没有问题:文件将被命名为类似于fs的文件,但应用程序可以find它。 问题是内容已迁移,文件可用,但应用程序无法find它! 我想知道问题来自哪里: 文件系统的字符表/编码表,我认为它来自这里 应用程序本身的PHP代码,这将是一个问题,因为我不能改变它。 我可以提交错误请求,但是我不确定什么时候会修复。 另一个问题 而最重要的是我需要find一种方法来解决这个问题。 因为它只发生在迁移的数据上,所以在Linux服务器上生产这些应用程序时,我可以编写一个脚本或调整我的fs / php / whatever来解决这个问题。 在此先感谢您的帮助。 注意:当应用程序找不到文件时,我的Apache日志被填充'readdir()期望参数1是资源,布尔在…错误中给出

上传一些PDF文件时出现mediawiki数据库错误

我正在用Apache,PHP和Postgresql-9.0在Gentoo Linux机器上运行私人mediawiki服务器。 有时当我们其中一个人试图上传一个PDF文件(这是我见过的唯一的types),我们得到的错误: MediaWiki内部错误。 原始exception:exception'DBUnexpectedError'带有消息'已发生数据库错误查询:UPDATE image SET img_size ='1129473',img_width ='1287',img_height ='1789',img_bits ='0',img_media_type ='OFFICE', img_major_mime ='application',img_minor_mime ='pdf',img_timestamp ='2011-08-31 16:39:11 GMT',img_description ='',img_user ='1',img_user_text ='Dynamphorous',img_metadata ='a: 15:{S:5: “标题”; S:0: “”; S:7: “主题”; S:0: “”,S:8: “关键字”; S:0: “”,S: 6:“作者”; s:0:“”; s:8:“Producer”; s:20:“Pdf-It version 1.410”; s:12:“CreationDate”; s:24:“Thu Jul 27 10 :10:25 2000“; s:7:”ModDate“; s:24:”Tue Apr 24 06:38:25 2001“; s:6:”Tagged“; s:2:”no“; […]

保护第三方PHP Web应用程序configuration文件的策略

我对保护PHPconfiguration文件的意见和策略感兴趣,尤其是那些使用db证书的configuration文件。 股票build议,将文件扩展名设置为* .php,尽pipe如此,但它不能防止目录读取攻击。 我正在考虑的特定情况: 我们有一个托pipe各种第三方应用程序的服务器。 我们不能彻底审查所有的应用程序 如果攻击者危害应用程序,他们可能会使用该应用程序从其他目录中读取文件。 DBconfiguration文件是一个明显的目标。 我有一个解决scheme,似乎有好处,但我不完全适应它。 我很乐意听到它的意见,以及 find什么php_include设置 将configuration文件放在该目录中 确保载入configuration文件的require / include语句不指定硬path(没有前导./等) GOALS 隐藏configuration文件完全从一个错误的姐姐networking应用程序(更重要的是从networking服务器本身)。 掩盖了configuration文件的实际位置。 通过阅读代码是不容易的。 这与在Web树之外指定path相反。 最小的干预,无论是在服务器级别还是在应用程序级别。 避免硬编码path。 这并没有解决configuration文件名称冲突,尽pipe更多的几个应用程序可能值得更改包括configuration文件名称。 不幸的是,我们的许多networking应用似乎都需要硬编码的path。 别人提出什么方法?

什么是“PHP退出错误代码1”?

我通过networking服务器运行一个PHP脚本来执行psexec ,然后执行另一个PHP脚本。 当我通常从命令行运行这一切,一切工作正常,没有问题。 但是,当我从networking服务器运行它,我得到这个: PsExec v1.98 – Execute processes remotely Copyright (C) 2001-2010 Mark Russinovich Sysinternals – www.sysinternals.com php exited with error code 1. 所以从这我可以明显地告诉psexec正常运行,但由于某种原因,PHP脚本正在退出。 就像我说的,但是,如果我从命令行手动运行它,它完美的工作。 我试图做一些四处张望,但我无法弄清楚。 有人知道吗? 我在Windows 2008上运行Apache2(XAMPP)

如何安全地杀死这些PHP进程?

我已经安装在Ubuntu和WordPress的php5。 它可以在安装后运行。 但几天后,我发现有很多的过程,并占据了很多的回忆。 我尝试使用 ps -aux | grep www-data 并发现了约30个这样的过程。 www-data 5066 0.0 0.0 131664 780 ? S 16:20 0:00 /usr/sbin/php5-fpm –fpm-config /etc/php5/fpm/main.conf 我尝试过了 kill -9 pid 并没有工作,更多的过程再次出现。 那么你能告诉我如何安全地杀死他们,我不想让我的vps的内存占用它。

通过域名访问PHP不工作,但通过IP访问时工作正常

通过tasksel完成安装Apache,PHP和mysql的Ubuntu Server的基本设置。 当我浏览到服务器的IP地址,它工作正常,并允许我很好地呈现PHP脚本。 我为服务器添加了一个DNS条目到我的本地DNS服务器,称之为webdev.lazer.net 当我通过浏览器访问这个域名时,它会呈现HTML文档,但是如果我尝试查看PHP脚本,则它不会呈现并以纯文本forms下载到浏览器(就像PHPparsing器不是呈现.php文档一样) 。 我敢肯定它的一些菜鸟错误,但任何帮助,将不胜感激。