Questions tagged «php»

PHP是一种通用脚本语言,特别适合于Web开发。在线手册是有关语言语法的绝佳资源,并且具有大量内置和扩展功能列表。大多数扩展都可以在PECL中找到。

4
我可以在脚本执行之前全局设置$ _SERVER ['REDIRECT_URL']吗?
我正在将许多站点从旧服务器配置迁移到新服务器。每个站点都使用mod_rewrite URL基于相似(但遗憾的是不完全相同)的代码库。 Ubuntu 8.04 LTS => Ubuntu 12.04 LTS Apache 2.22.8 => Apache 2.2.22 PHP 5.2(FastCGI)=> PHP 5.3(PHP5-FPM) 大多数情况下,它的工作方式像一个超级按钮,但是在新配置中,不再设置$ _SERVER ['REDIRECT_URL'],并且由于依赖于此全局变量,导致代码失败。 据我了解,当重定向发生时,此变量由Apache设置。显然,这现在还没有发生,但是我正在努力寻找原因。 是Apache升级,还是(我猜)从PHP FastCGI切换到PHP5-FPM? 我如何找回这个变量? 我真的不想在每个站点上都编辑代码,因此如有必要,我将设置一个全局PHP auto_prepend,但理想情况下,我想修复服务器配置并将其设置为第一位。 可能相关:我现在还有几个新的$ _SERVER变量,即REDIRECT_SCRIPT_URL和REDIRECT_REDIRECT_SCRIPT_URL。这些似乎具有我想要的用于REDIRECT_URL的正确数据,但似乎也表明发生了两次以前没有发生过的内部重定向-Google搜索REDIRECT_REDIRECT_SCRIPT_URL只会返回随机的var_dump输出。SCRIPT_URL是新的REDIRECT_URL吗? 编辑1 再次检查REDIRECT_URL(现在)已设置,但始终设置为“ index.php”(mod_rewrite目标),而不是预期的键入URL。我求助于使用PHP auto_prepend_file手动设置所需的变量。 我不确定我是如何第一次错过它,但是在此期间我进行了几处更改,所以我认为外面没有机会。抱歉,如果这误导任何人。 编辑2 为了解决下面提到的ErrorDocument,使用的mod_rewrite规则是: RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] $ _GET ['url']变量已设置,因此该规则必须有效。 需要明确的是,在此阶段,我已经采用了我最初提到的auto_prepend_file解决方法。

1
在php-fpm confs而不是php.ini中设置php值
我想在php-fpm conf文件中设置值,通常在php.ini中设置。我正在使用nginx。 我创建了以下设置,但是不确定是否可以使用。 php_value[memory_limit] = 96M php_value[max_execution_time] = 120 php_value[max_input_time] = 300 php_value[php_post_max_size] = 25M php_value[upload_max_filesize] = 25M 你觉得这样还可以吗? 当同时在php.ini和php-fpm conf文件中设置一个值时,会发生什么?php-fpm覆盖了ini一个? 最后,以这种方式可以为所有虚拟主机设置不同的值不是问题吗?我的意思是php.ini似乎是一个全局设置,而这取决于主机。不同的主机可以以不同的内存限制运行吗?

2
上传大于1MB的文件=连接重置
我在前端使用nginx作为“代理缓存”,在后端使用apache,我将PHP设置设置为以下内容: error_log = /var/www/site1/php_error.log error_reporting = 22527 file_uploads = On log_errors = On max_execution_time = 0 max_file_uploads = 20 max_input_time = -1 memory_limit = 512M post_max_size = 0 upload_max_filesize = 1000M 有什么问题?小于1MB的文件上传成功,但大于等于1MB的上传成功,Google Chrome输出: Error 101 (net::ERR_CONNECTION_RESET): The connection was reset. 我已经检查了错误日志文件,但该目录中不存在该文件。我也检查了/var/log/httpd/error_log但没有上传相关的问题。我不知道其他任何可能导致问题的原因,所以我已经伸出援助之手。谢谢!
8 apache-2.2  php  nginx 

1
当我看到CPU使用率很高但内存使用率较低时,应该如何调整apache?
我的CentOS Web节点(LAMP堆栈)的CPU使用率很高,但内存使用率却很低。几乎所有过程都是apache。我知道我可以添加其他Web节点,直到我的CPU使用率变得合理为止,但是我想这里有一些快速的调优技巧可能会在很长一段路要走。 CPU弹跳在90-100%之间。Mysql弹跳介于5%和45%之间。Apache构成了其余部分。 最佳: top - 21:15:49 up 46 days, 20:39, 4 users, load average: 34.17, 44.62, 51.03 Tasks: 133 total, 32 running, 101 sleeping, 0 stopped, 0 zombie Cpu(s): 90.4%us, 9.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st Mem: 8388608k total, 6116448k used, 2272160k free, 84160k buffers Swap: 16777208k total, …

3
memcache.so的问题
我被要求启动其他人建立的网站。这是一个需要运行Memcached的Wordpress商店站点,我一直在使Memcached和memcache php插件在本地服务器上运行时遇到麻烦。在安装memcached和memcache PHP插件之前,我会收到此错误: Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350 现在,我已经安装了memcached和memcache PHP插件(通过Homebrew),我得到了一个“未收到数据”页面,并在我的Apache错误日志中得到以下错误: dyld: lazy symbol binding failed: Symbol not found: _mmc_queue_pop Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so Expected in: flat namespace dyld: Symbol not found: _mmc_queue_pop Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so Expected in: flat namespace [Sat May 05 16:38:27 2012] [notice] …
8 php  mac  memcached  memcache  lion 


3
php5-fpm如果访问者过多,则会崩溃
我决定将我的OP从Litespeed更改为Nginx,因为我了解了很多有关Nginx会花费的低资源的信息。 我正在运行一个有500个用户在线的Wordpress网站 好的,谢谢你们的帮助:)我编辑了一些内容。 我还有一些问题: 我必须删除吗?下午之前。设置?我删除了它什么配置很重要?我在/ etc / php5 / fpm中有两个快速cgi,一个叫做php-fpm.conf,在/etc/php5/fpm/pool.d中有一个快速的cgi,叫做www.conf? 我一整夜都在尝试新的配置,当我醒来时,我已经有了空白页。最佳: top - 13:55:27 up 1 day, 19:28, 2 users, load average: 0.18, 0.36, 0.19 Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3974264k total, 1051360k used, …
8 php  nginx  php-fpm 

5
Nginx / FPM / PHP所有的php文件都说“找不到文件”。
我刚刚在centos 5.8最终64位计算机上安装了nginx 1.1.13和php 5.4.0。Nginx和PHP / Fpm正在运行,我可以通过ssh命令行运行php脚本,但是在浏览器中,我一直在显示“找不到文件”。我所有PHP文件上的错误。 这就是我让nginx.conf处理PHP脚本的方式: location ~ \.php$ { root /opt/nginx/html; fastcgi_pass unix:/tmp/fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name; include fastcgi_params; } 这是我其他服务器的直接复制/粘贴,在此设置下可以正常工作(但它们运行的​​是php / fpm的旧版本)。 为什么会出现这些错误?
8 php  nginx  php-fpm 

1
命令行上的PHP显示“内存不足”,没有文件名,行号或内存值
我最初将此内容发布在/programming/9665189/php-on-command-line-displays-out-of-memory,但建议改为在此处发布。 当脚本中的内存不足时,这不是正常的致命错误,因为它没有给出文件名,行号或已使用的内存量。每当我尝试在命令行上运行php时,它只是说“ Out of memory”(内存不足),要么在传递脚本时要么直接运行php。即使尝试运行不存在的脚本也会给出相同的消息。 换句话说,我得到这个: dan@server [~]# php Out of memory dan@server [~]# php test.php Out of memory dan@server [~]# php doesntexist.php Out of memory dan@server [~]# php -v Out of memory 但是通过Apache的PHP绝对可以正常工作。我只是在CLI上收到此错误。 有问题的机器正在运行64位的CentOS版本5.7(最终版)和PHP 5.3.10。这是一台专用服务器。 我已经尝试按照建议的方式运行dan作为ulimit -a,这是输出: core file size (blocks, -c) 200000 data seg size (kbytes, -d) 200000 …

3
Apache + PHP-FPM =随机的“错误解析脚本头” + Seg Faults
我已经使用proxy_fcgi与Apache 2.4一起安装了PHP-FPM,一切正常,但是4-6个请求中的每个请求,Apache都会返回一个空白页。这发生在我的主要网站http://danielhe.com/上,但不发生在子域虚拟主机上。 这显示了Apache的错误日志,[client x] AH01070:解析脚本头时出错 最终,有时Apache出现segfaults AH00052:子pid 9740退出信号分段错误(11) 通过几次刷新页面,我可以很容易地重现“错误解析脚本头”,但是在几次“错误解析脚本头”之后,seg错误会随机发生。 更新 我找到了针对段错误的修复程序,并且WSOD显然已经修复了自身。mod_deflate存在一些问题,但是Apache文档中的此配置对其进行了修复 SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \ \.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary

6
在Debian中将PHP 5.4降级到5.3
我必须在服务器上进行Debian dist升级...在此过程中,PHP升级到了5.4。我们使用的ioncube仅支持最高5.3 atm,而我在寻找如何从5.4降级到5.3时遇到了一些麻烦。有人知道吗?
8 php  php5  debian 

3
将S3存储桶直接安装到EC2实例中是否安全?
就像我的问题的标题所说,我想知道这是否是一种好习惯, 我知道我可以在EC2实例中挂载它,但是我想知道是否(因为我将添加更多实例来扩展我的应用程序)这是否会引起一些问题?你对此有一些经验吗? 我正在使用S3允许通过PHP脚本上传文件,所以基本上的问题是: 使用Mouting是一种好习惯还是有更好的方法来处理用户文件上传? 提前致谢

3
更改php模块目录
我正在编译php,并将其模块目录设置为/ usr / lib64 / 20090626-zts 我想将其更改为/ usr / lib64 / php / modules,但是我找不到配置选项。 我可以在php.ini中更改它并移动目录,但是当我运行phpize并创建一个新模块时,它仍将其放在/ usr / lib64 / 20090626-zts中
8 linux  php 

2
如何记录来自PHP + cURL的传出HTTP请求?
我设置了一个PHP脚本,该脚本在站点上执行操作时都会发出cURL请求。问题在于,每当运行操作时,该信息就会被发布两次。 如果这是我的问题(cURL被运行两次),或者它发布到的URL做两次,则需要解决。 我想最好的方法是查看服务器发出的http POST请求。 这是最好的选择吗?如果是这样,我该怎么做?
8 linux  ubuntu  php  curl 

6
如何防止Apache跌落?
我有两台服务器托管着一个流量适中的Magento电子商务网站(每天从Google Analytics(分析)报告的浏览量为60k,我认为服务器本身报告的浏览量为80k)。除了罕见的偶发嘶哑之外,数据库服务器还可以平稳,快速地运行,但是apache服务器经常崩溃。 我已经设置了magento以使用推荐的PHP缓存(APC),以及将其自己的缓存文件保存在1.5 gig tmpfs中(此tmpfs通常会变得很满,当tmpfs为超过80%的容量)。我为Amazon Cloudfront提供大多数图像。我最近将nginx设置为apache的反向代理(nginx也提供静态文件)。我已尽力配置apache-keepalive和hostnamelookups已关闭,并且prefork的配置如下: <IfModule prefork.c> StartServers 50 MinSpareServers 50 MaxSpareServers 100 ServerLimit 512 MaxClients 256 MaxRequestsPerChild 400 </IfModule> 我尚未关闭.htaccess文件,并且访问日志记录已打开。我知道有些模块可以关闭。我不确定这三个更改中的任何一个将产生什么影响(如果有)。 apache服务器是具有6 gig RAM的VPS。截至撰写本文时,服务器正在报告load average: 17.77, 18.27, 49.76,但大约有2 GB的可用RAM。如果情况真的很糟,负载将达到120+并保持在该水平-重新启动apache会使站点恢复正常,负载也会下降。 vmstat是(当服务器报告上述负载时),我认为这表明CPU空闲值在0到70左右之间波动。iostat显示的iowait值介于0到0.2%之间。 我有点卡住了。我所知道的很少是告诉我的问题是,由于正在运行的代码和用户数量的结合,导致CPU过载。但是我经验不足,无法确定这就是问题所在。如果这是问题所在,我认为解决方案将是改进代码或使用负载均衡器将站点托管在两个VPS上。 所以,我想我的问题是: 我还能做些什么来发现服务器上的问题或瓶颈? 我可以对服务器配置进行任何明显的更改以改善这一点吗? 设置自动化系统以在负载超过一定水平时重新启动apache是​​一个好主意吗? 从上面可以看出,该站点超出服务器的可能性有多大? 编辑: 我发现有些奇怪的东西-/ var / spool / mail / root很大... 38演出。听起来不健康。这可能是问题吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.