我正在寻找一个非常简单、轻量级的 SMTP 服务器来在 Ubuntu 9.04 VPS 上运行。
我需要的唯一功能是支持 PHP 邮件命令;
<?php
mail('caffeinated@example.com', 'My Subject', 'My message');
?>
Run Code Online (Sandbox Code Playgroud)
这就是它需要做的全部。对于入站邮件,我不需要日志记录、POP3、IMAP 或其他任何东西 - 只是简单的纯文本 SMTP。电子邮件将没有文件附件。
任何建议都非常感谢。
我正在尝试在支持 LDAP 的 Ubuntu 12.10 上编译 PHP。我跑了:
apt-get install libldap2-dev
Run Code Online (Sandbox Code Playgroud)
这会将头文件安装到/usr/include.
但是,在尝试编译时无法找到头文件。我也尝试过--with-ldap=/usr/include,但仍然失败:
configure: error: Cannot find ldap.h
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下符号链接,但仍然出现相同的错误:
ln -s /usr/lib/ldap* /usr/lib/
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助。
最近我发现我的服务器Centos 2.6 版中没有安装 mysqli 扩展。我确认这是因为我将数据库连接的驱动程序从 更改mysqli为mysql并且现在工作正常。那么,是否有另一种方法/日志来确定这个问题?因为 apache error_log 没有说明任何事情。
这确实不是问题,但将来可能会更复杂。为什么?因为使用 mysqli 驱动程序,网站死了,空白页没有错误/警告来帮助我排除故障。我不喜欢发现魔术艺术或每行测试线的问题的想法。应该是一些帮助我调试它的日志文件。
为了提供信息来帮助解决这个问题,我做了:
cat /proc/version
Linux version 2.6.18-308.el5.028stab099.3 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46))
Run Code Online (Sandbox Code Playgroud) 直到今天,我使用了一个便宜的路由器,这样我就可以在使用 NAT 的同时共享我的互联网连接并保持网络服务器在线。用户 IP ($_SERVER['REMOTE_ADDR']) 很好,我看到的是用户的 A 类 IP。
但是随着流量每天都在增长,我不得不安装一个 Linux 服务器 (Debian) 来共享我的 Internet 连接,因为我的旧路由器无法再保持流量了。我使用 NAT 通过 IPTABLES 共享互联网,但是现在,在将端口 80 转发到我的网络服务器后,现在我看到的不是真正的用户 IP,而是将我的网关 IP(Linux 内部 IP)视为任何用户 IP 地址。
如何解决这个问题?
我编辑了我的帖子,所以我可以粘贴我当前使用的规则。
#!/bin/sh
#I made a script to set the rules
#I flush everything here.
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X
# I drop everything as a general rule, but this is disabled under testing
# iptables -P INPUT DROP
# iptables …Run Code Online (Sandbox Code Playgroud) 我已将 PHP5 添加到 UBUNTU 12.04
sudo add-apt-repository ppa:ondrej/php5 -y
Run Code Online (Sandbox Code Playgroud)
并安装了 PHP5
php5 php5-common php5-mysql php5-xmlrpc php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear php5-dev php5-imap php5-mcrypt
Run Code Online (Sandbox Code Playgroud)
但是我找不到两个包
php-xml and php-mbstring
Run Code Online (Sandbox Code Playgroud)
知道他们现在如何称呼吗?
非常感谢,
1.我有以下服务器设置:
(在使用 Hyper-V 的 VM 中运行)
Debian 挤压
Linux 2.6.32-5-amd64
Apache2-mpm-prefork 2.2.16-6+squeeze10
PHP 5.3.3-7+squeeze14
此服务器受 Suhosin 补丁 0.9.9.1 保护
每个孩子的最大请求数:0 - 保持活动状态:开启 - 每个连接的最大请求数:100
超时连接:300 - Keep-Alive:15
加载的模块核心 mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_digest mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_cgi mod_deflate mod_dir mod_env mod_mime_phpre
Wordpress 3.4.2(即将升级到 3.5 :)
2.问题
当我重新启动服务器(sudo shutdown -r now)时,转到任何网站页面都会导致 Web 浏览器出现以下错误(在本例中为 Google Chrome,但其他浏览器也显示相同的错误)。这个错误也可能发生一个小时左右,毕竟工作正常,似乎是随机的,这是我最担心的,因为这意味着我的服务器不可靠:
未收到数据 无法加载网页,因为服务器未发送数据。以下是一些建议: 稍后重新加载此网页。错误 324 (net::ERR_EMPTY_RESPONSE):服务器关闭了连接但没有发送任何数据。
3. 诊断信息 apache 错误日志包含以下条目:
[Fri Dec 14 22:23:27 2012] [notice] child …
我最近更新了我的.htaccess文件以隐藏网址的.php 扩展名。效果很好,当我尝试访问domain.com/index 时,它会显示 php 文件。
当我输入domain.com/index.php 时,它会将我重定向到domain.com/index url 并显示 .php 文件。
出于安全原因,我想将所有其他扩展名重定向到无扩展名 url 以显示 .php 文件。我的问题是,我无法将.htaccess配置为重定向众所周知的扩展名,如.html .asp。aspx .shtml 等到非扩展 url,并获取 .php 文件显示为内容。
我的 .htaccess 文件如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
# no extension to the .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
# this is for the …Run Code Online (Sandbox Code Playgroud) 我的 phpinfo.php 没有显示额外的 PHP 配置文件的额外文件夹。我在 CentOS v6.3 32 位上运行 Apache v2.4.4(使用 PHP DSO)和 PHP v5.4.14。Apache 和 PHP 安装是从源代码编译的。
我没有使用--with-config-file-scan-dir=PATHPHP的配置选项。(并且不会使用,因为我将需要多个文件夹)。
环境变量PHPRC和 Apache 指令PHPIniDir与主要的 PHP 文件相关,这让我可以使用环境变量PHP_INI_SCAN_DIR。以下是我所做的步骤:
PHP_INI_SCAN_DIR作为操作系统环境变量需要在 Apache 启动之前设置。所以我将以下条目添加到我的/etc/profile.d/php.sh文件中。
PHP_INI_SCAN_DIR="/usr/local/lib/php/custom" 导出 PHP_INI_SCAN_DIR
然后重新启动了系统。
现在命令env | grep PHP,php -i | grep INI并php --ini给我以下输出。
=> # env | grep PHP
PHP_INI_SCAN_DIR=/usr/local/lib/php/custom
=> # php -i | grep INI
PHP_INI_SCAN_DIR …
我已经启动并运行了 mod_deflate。我可以在我的 apache 服务器中放入一个 something.txt 文件并使用 curl 来检查它。
curl --compressed -I /somefile.txt 给了我以下很好的压缩信息:
Vary: Accept-Encoding
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
但是如果我使用 /some.php 我会回来:
Accept-Ranges: bytes
X-Powered-By: PHP/5.4.4-14+deb7u5
Run Code Online (Sandbox Code Playgroud)
但没有内容编码:gzip,我使用的 .htaccess 有多个选项:
SetOutPutFilter DEFLATE
Run Code Online (Sandbox Code Playgroud)
或者
AddOutputFilterByType DEFLATE application/json
Run Code Online (Sandbox Code Playgroud)
我还检查了 php.ini 中的 zlib 压缩是否关闭,并尝试将输出缓冲区设置为关闭。但无论我尝试什么,我都无法让 php 输出被 apache 压缩。从 apache 到 zip 的开销比我使用 php zlib 时少。
我看到了足够多的帖子,比如Apache 输出压缩适用于 CSS/JS 而不是 PHP,但可以从 php 压缩。我想要 apache 来处理它。
我一定在这里遗漏了一些愚蠢的东西。
更新:我解决了所有问题,也是因为给出的答案。最后它仍然没有100%起作用。这是由于安装了错误的软件包。使用了 apache2filter,这让我走错了路。
我无法在本地开发机器上执行 PHP 文件。我似乎已经成功安装了nginx并且php-fpm似乎也已正确安装,并且正在运行,但无法弄清楚为什么 PHP 文件被下载而不是被执行。
在经历了很多很多小时的挫折之后,我认为最好问问以前可能做过这件事的人!我已尽力提供所有信息,但如果有任何可能有用或我遗漏的信息,请随时在评论中提问。
请注意:请仔细阅读我遇到的问题。我之所以这么说是因为我已经通读了几乎所有与 Google 可以提供给我的与此问题相关的文章,并尝试了几种不同的方法、修复、建议、重新安装、配置等。但每个人都无法提供帮助修复甚至调试我遇到的问题。换句话说,这绝对不是一个重复的问题。我花了几个小时阅读以确保!
我已经成功安装了nginx和php-fpm使用https://github.com/josegonzalez/homebrew-php. 好的 ol' trustybrew doctor确认一切都是最新的,我已经安装了所有必要的东西(XQuartz、Xcode 命令行工具等)。
以下是一些在尝试理解我的设置时可能有用的文件摘录:
php-fpm 日志
tail -f /usr/local/var/log/php-fpm.log
[24-Dec-2013 00:05:59] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[24-Dec-2013 00:05:59] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[24-Dec-2013 00:05:59] NOTICE: fpm is running, pid 31745 …Run Code Online (Sandbox Code Playgroud)