嗨,Apache 和 php 运行良好,但我在 php.ini 中所做的任何更改都没有效果,我什至删除了文件的所有内容,然后重新启动 Apache,并运行 phpinfo(),令人惊讶的是一切都继续正常运行。
我正在编辑的文件是出现在 phpinfo() 中的文件,如“加载的配置文件”。(/etc/php5/apache2/php.ini)
PS 我正在运行 Ubuntu 9.04 和 PHP 5.2
更多细节:
我用 sudo /etc/init.d/apache2 restart 重新启动,我也试过 sudo /etc/init.d/apache2 stop,然后启动,在重新启动时我得到:
“which php”没有产生任何结果。
我的 PHP 安装是使用 Synaptic Package Manager 完成的,选择“按任务标记包”,然后选择 LAMP 服务器。
我不知道该怎么做...
我有一个 Ubuntu 9.10 服务器。我已经使用 apt-get 命令安装了 apache2 和 php5。
如何安装php扩展?是否有像 apt-get 这样的命令来获取它们?或者我应该手动查找 php 网站上的文件并在 php.ini 中设置它们?
更具体地说,我需要 mcrypt、curl 和 gd。
谢谢
在一些服务器更改之后,我们的 PHP 配置被破坏了,这导致客户端的大型邮件列表在大约 4,000 个或更多地址中部分超时。我们希望尽可能避免发送重复邮件,并且我们有原始邮件列表。
邮件是使用 PHP 的mail()函数发送的,该函数使用sendmail,表示它正在使用Exim. 我见过命令:
sendmail -bp
Run Code Online (Sandbox Code Playgroud)
这给了我一个显示已发送的邮件列表。这个列表不是很大,而且可能是准确的(意味着脚本在只发送了一百封左右的电子邮件后就超时了)
是sendmail -bp获得此列表的最佳方式吗?
编辑:我mail.log在/var/log/mail.log或 via 中找不到任何文件locate mail.log,但 WHM 似乎对此有一些信息。
首先我知道这个变量: _SERVER["SERVER_SOFTWARE"]
在我的一个应用程序中,我想从 PHP 脚本中检查它正在运行的网络服务器。基本上它将是一个 wordpress 插件,它将帮助博主调整一些配置。
我为 Apache 和 Nginx 创建了单独的进程,并且还考虑将代码发布为 2 个不同的 wordpress 插件。
然后我很想知道 PHP 中是否有一种 FULLPROOF 方法可以完美地检测网络服务器。
请考虑所有情况 :: Apache、Nginx、Apache + Nginx、PHP 作为 Apache 模块、PHP 使用 fastcgi、php-fpm、lighttpd、IIS 等。
对于我的应用程序检测组合和代理是否存在也至关重要。
谢谢,
-拉胡尔
我真的很感激能帮助理解这种 Apache 行为。
我正在从应用程序/json 中的 iPhone Objective-C 应用程序与 PHP 通信。Gzip 压缩在服务器上启用,并由客户端请求。
从我的.htaccess:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Run Code Online (Sandbox Code Playgroud)
对于小型请求,Apache 正在设置“Content-Length”标头。例如(这些值在 Objective-C 中从标头输出):
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 185; <-------------
"Content-Type" = "application/json";
Date = "Wed, 22 Sep 2010 12:20:27 GMT";
"Keep-Alive" = "timeout=3, max=149";
Server = Apache;
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.2.13";
"X-Uncompressed-Content-Length" = 217;
Run Code Online (Sandbox Code Playgroud)
X-Uncompressed-Content-Length是我添加的标头,设置为未压缩 JSON 字符串的大小。
如您所见,此请求非常小(217 字节)。
这是来自较大请求(282888 字节)的标头:
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Type" = "application/json";
Date = "Wed, …Run Code Online (Sandbox Code Playgroud) 在 Ubuntu 服务器上设置 Postfix 和 Apache/PHP。邮件现在可以使用正确的域名发送出去,但本地部分显示名称始终为“www-data”,因为我假设 Postfix 默认使用用户名。
在 php.ini 文件中,我能够更改为sendmail_path,sendmail_path = "/usr/sbin/sendmail -t -i -f support@example.com"但电子邮件显示名称仍显示为 www-data 。我尝试以几种不同的方式指定显示名称,但这被忽略了,邮件仍然作为 www-data 发出。
我希望能够做的是默认情况下,将任何缺少 from、return-path 等的邮件作为 发送出去"Example Support" <support@example.com>,但我不确定这是否可能。
我有一个 PHP 脚本,它处理脚本路由并执行各种奇特的事情。它最初是为 Apache 设计的,但我正在尝试将它迁移到 nginx 以用于我的一些机器。现在,我正在尝试在测试服务器上解决问题。
所以脚本的工作方式是它使用.htaccess文件拦截目录(在 Apache 中)的所有 HTTP 流量。这是它的样子:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+$ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
很简单。所有请求都通过index.php,简单明了。
我想在 nginx 上模仿这种行为,但我还没有找到方法。有人有什么建议吗?
这是我目前nginx.conf文件的副本。请注意,它是为我设计的,只是为了让它工作;主要是复制/粘贴工作。
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type text/plain;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name swingset.serverboy.net;
access_log /var/log/nginx/net.serverboy.swingset.access_log;
error_log /var/log/nginx/net.serverboy.swingset.error_log warn;
root /var/www/swingset;
index index.php index.html;
fastcgi_index index.php; …Run Code Online (Sandbox Code Playgroud) 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
Run Code Online (Sandbox Code Playgroud)
我的问题是这个过程需要很长时间才能运行,有很多磁盘 IO。这是我的 CPU 使用率图:

清理运行由青色尖峰表示。期间开始时,PHP 的清理作业被安排在默认的 09 和 39 分钟时间。在 15:00,我从 cron 中删除了 39 分钟的时间,因此大小两倍的清理作业运行的频率减半(您可以看到峰值宽度加倍,频率减半)。
以下是IO时间的相应图表:

和磁盘操作:

在大约有 14,000 个活动会话的高峰期,可以看到清理运行了整整 25 分钟,显然在整个期间使用了 100% 的一个 CPU …
我正在尝试以下重写规则:
location / {
index index.php index.html;
rewrite ^/test$ /test.php break;
}
Run Code Online (Sandbox Code Playgroud)
我还有:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /home/sites/default$fastcgi_script_name;
fastcgi_index index.php;
}
Run Code Online (Sandbox Code Playgroud)
普通的 php 文件工作正常,但似乎我的重定向只是下载我重定向到的 php 文件,而不是解析它。
我错过了什么?我通过将 fastcgi 内容放在第一个位置块中来加载文件,而不是下载,但它仍然没有解析为 php。
我们经常在专用服务器上遇到奇怪的网络问题。它在 Xeon E5620 上运行 Windows Server 2012 R2 x64,具有 16 GB RAM 和 Intel 82575EB 网络适配器。
请注意,我们已经调整HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters键值TcpTimedWaitDelay,并MaxUserPort分别以30和65530。
我们的网站在某个随机时间点停止响应,原因是它们无法连接到本地数据库。此问题开始发生时大约需要 2 周的正常运行时间。系统日志开始收到 TCPIP 警告 4227 和 4231。它指出“由于所有此类端口都在使用中,从全局 TCP 端口空间分配临时端口号的请求已失败。”。
如果我跑
Get-Counter -Counter \TCPv4\*
Run Code Online (Sandbox Code Playgroud)
或者
Get-Counter -Counter \TCPv6\*
Run Code Online (Sandbox Code Playgroud)
或者
netstat -abn | find /c ":"
Run Code Online (Sandbox Code Playgroud)
我总是得到 500-1500 个连接的合理值,这甚至不接近 65K 的限制。
此外,“localhost”在本地停止解析为 ::1,恢复为 127.0.0.1
只有强制重启机器才能解决这种情况。
会不会是网络适配器问题?
更新 1
当我重新启动邮件服务器时,它再次发生并且似乎已经解决。奇怪的是,所有计数器都显示了 ~1000 个连接,其中 ~500 个目前处于活动状态,并且在尝试连接到与邮件服务器无关的数据库时仍然出现 10055 套接字错误。
更新 2 这很奇怪,但是邮件服务的每日重启完全解决了这个问题。
php ×10
apache-2.2 ×5
linux ×3
nginx ×3
ubuntu ×3
sendmail ×2
compression ×1
email ×1
exim ×1
gzip ×1
networking ×1
performance ×1
postfix ×1
rewrite ×1
web-server ×1