有没有我可以在命令行(使用 ssh 访问)运行的函数来查看我的 apache 服务器上设置的日期和时间?
我已经安装了 Apache 和 PHP。我知道 PHP 可以工作,因为我已经在 Apache 服务器上测试了一个简单的 PHP 文件。
我正在编写一个简单的网络服务器,它应该能够处理 PHP 文件。因此,一旦我收到对 PHP 文件的请求,我就想做诸如“exec php test.php”之类的操作并获取输出并将其传递给客户端。
因为我不太喜欢 Ubuntu,所以我不知道 PHP 可执行文件在哪里(应该在 \bin 中?)但是\bin 或\usr\bin 中没有PHP 文件。
当我运行“which php”时,它什么也没显示。我该怎么做呢?
我正在运行 Mac OS X 10.9.4,包括内置的 apache2 网络服务器和来自 brew 的 PHP 5.5.14(包:php55、php55-intl、php55-pdo-pgsql、php55-xdebug)。
运行此设置时,它运行良好。但是,一段时间后,我将针对每个请求运行 403 错误。我查看了 apache 错误日志,发现如下内容:
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Warning: require_once(/Users/daniel/Development/massiveart/sulu-complete/app/bootstrap.php.cache): failed to open stream: Too many open files in /Users/daniel/Development/massiveart/sulu-complete/web/website.php on line 10, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP 1. {main}() /Users/daniel/Development/massiveart/sulu-complete/web/website.php:0, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Fatal error: …Run Code Online (Sandbox Code Playgroud) 我刚刚在 RHEL 6.1(提供 Apache 2.2.15)中安装了 httpd 包。默认的 httpd.conf 包含不少于 50 个 LoadModule 指令的实例。
但是,我想要做的就是提供静态内容、一两个 Google 地图和一些 CSS。
反复试验以及apachectl configtest,让我相信我可以只启用以下模块(假设没有对默认配置文件进行其他更改):
mod_authz_host
mod_log_config
mod_mime_magic
mod_setenvif
mod_mime
mod_autoindex
mod_negotiation
mod_dir
mod_alias
Run Code Online (Sandbox Code Playgroud)
为了更好/更安全地运行服务器,是否应该包含在此列表中的模块?在官方的文档似乎表明,没有什么比mod_dir和mod_mime绝对必需的准系统网站。
注意:我不会就指定任务使用哪个 HTTP 服务器征求建议。我知道“更轻”服务器的存在。这个问题是关于 Apache 模块的。
我有一个带有多个 VirtualHosts 的 Apache2 配置。我的 DNS 设置为*.<domain>.<tld>在多个域上接受。一切正常,但如果我去,something-random-here.example.com我似乎选择了一个无效的 VirtualHost(我猜是它找到的第一个或最后一个)。如果没有任何 VirtualHost 条目与域或子域匹配,有没有办法告诉 Apache 使用某些规则?我最好想返回 404。
我需要允许从我的 Apache 访问 ~/Sites 中的符号链接目录。我像这样对目录进行符号链接
ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here
Run Code Online (Sandbox Code Playgroud)
现在每当我发起 GET 请求时,我都会收到 403 回复
curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...
Run Code Online (Sandbox Code Playgroud)
我如何告诉 Apache 允许访问符号链接目录,以及如何告诉 Apache 仅允许从本地主机发出的请求。
任何帮助是极大的赞赏。
此致
罗伯特
我对我尝试部署的这个设置感到困惑。我希望你们当中有人能帮我一把:非常感谢。
背景资料
服务器是Debian 6.0,ext3,前面是Apache2/SSL和Nginx作为反向代理。我需要提供对 Apache 根目录 (/var/www) 的 sftp 访问权限,确保 sftp 用户以 RWX 权限被 chroot 到该路径。
所有这一切都没有修改 /var/www 中的任何默认权限。
drwxr-xr-x 9 root root 4096 Nov 4 22:46 www
Run Code Online (Sandbox Code Playgroud)
里面 /var/www
-rw-r----- 1 www-data www-data 177 Mar 11 2012 file1
drwxr-x--- 6 www-data www-data 4096 Sep 10 2012 dir1
drwxr-xr-x 7 www-data www-data 4096 Sep 28 2012 dir2
-rw------- 1 root root 19 Apr 6 2012 file2
-rw------- 1 root root 3548528 Sep 28 2012 file3
drwxr-x--- 6 www-data www-data 4096 …Run Code Online (Sandbox Code Playgroud) KeepAliveTimeout如果在给定的时间段内未发出新请求,Apache 的存在将关闭保持活动的连接。如果用户没有关闭他的浏览器/选项卡,这个超时(通常是 5-15 秒)最终会关闭大多数保持活动的连接,并防止服务器资源因无限期地保持连接而浪费。
现在,该MaxKeepAliveRequests指令限制了单个 TCP 连接(由于 保持打开状态KeepAlive)将提供的 HTTP 请求数。将此设置0为允许无限数量的请求。
你为什么要把它设置为“无限”以外的任何东西? 如果客户端仍在主动发出请求,让它们发生在同一个保持活动连接上有什么危害?一旦达到限制,请求仍然会进来,只是在一个新的连接上。
在我看来,限制这一点毫无意义。我错过了什么?
我已经搜索了一个小时,找到了一百个使用它的例子,但没有解释它的作用。我确实检查过man apache2ctl;它也没有解释 k 标志(尽管它确实在示例中使用了它)。
我知道这看起来与其他问题相似,但 Yosemite 似乎在升级时更改了 apache 配置。我的错误日志显示“客户端被服务器配置拒绝:/Users/douglas/Sites/testpatient.php”
Apache 版本:MacBook-Pro:apache2 douglas$ apachectl -v 服务器版本:Apache/2.4.9 (Unix) 服务器构建:2014 年 9 月 9 日 14:48:20 我的 douglas.conf 文件是 644 root/wheel 和以下内容:
<Directory "/Users/douglas/Sites">
Options Indexes Multiviews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
我的 http.conf 有以下内容:
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as. …Run Code Online (Sandbox Code Playgroud)