在带有 的 Gentoo 3.2.12 服务器上apache2+php,有几个网站在运行:
/www
/website1
/website2
...etc
Run Code Online (Sandbox Code Playgroud)
该apache用户应具有只读到所有的网站访问。每个网站里面还有几个文件夹apache应该具有读写访问权限(上传文件夹等)。
有几个人在这些网站上工作。每个人都应该拥有对他们工作的网站的读写访问权限,但其他人则没有。此外,他们应该能够设置权限(在他们的网站内),以便apache可以写入某些文件夹(好吧,如果他们创建新的上传文件夹或其他内容)。
其他用户根本不应该有访问权限/www。
这可以做到吗?如何做到?
(PS。另外...因为这些人可以上传 PHP 脚本,然后在 Apache 的上下文中执行,我猜他们也可以间接访问其他网站...是否也可以保护它?我不能想办法,但谁知道...)
需要从 PHP 执行以下行:
$res = shell_exec('sudo sh /home/nicklas/cronjobs/make_account.sh 用户名密码');
问题是执行时什么也没有发生。如果我尝试 echo $res ,它会出现空白。我也试过使用 system() ,结果相同。我猜它不起作用,因为我需要以 root 访问权限运行脚本,而 www-data 用户默认情况下没有。我将以下行添加到 /etc/sudoers 以希望获得访问权限:
www-data ALL=(ALL:ALL) NOPASSWD:/home/nicklas/cronjobs/make_account.sh
但没有成功。我试过在两者之间重新启动 apache,没有任何改变。
我错过了什么吗?
这是一个全新的服务器,具有全新的安装和全新的 Apache/PHP 编译,没有任何异常。只是一个托管的 WordPress 网站,我得到以下信息。
这是否意味着内存不好?如果是这样,我如何在不取下盒子的情况下对其进行测试。
尽管使 php.ini 设置不受限制,但我注意到 PHP 存在一些奇怪的内存问题。
conftest[31039]: segfault at 1 ip 0000000000405088 sp 00007fff92152090 error 4 in conftest[400000+a4000]
conftest[26375]: segfault at 1 ip 0000000000405088 sp 00007fffa5b0b450 error 4 in conftest[400000+a4000]
php[10669]: segfault at aec69ff1 ip 0000000000759ac1 sp 00007fff39245950 error 4 in php[400000+6dd000]
php[14634]: segfault at 0 ip 000000000073ea24 sp 00007ffffaa24c60 error 4 in php[400000+6dd000]
php[17315]: segfault at 9e979531 ip 0000000000759ac1 sp 00007fff877ba610 error 4 in php[400000+6dd000]
php[2804]: segfault at 108afe2a1 ip 0000000000759ac1 sp 00007fff53cb5210 error …Run Code Online (Sandbox Code Playgroud) 自从我开始编写 LAMP 应用程序以来,我想为我的盒子开发一个管理控制面板。(出于娱乐和教育目的,否则我会使用市场上已有的东西)
但总是阻止我的是我总是听说 exec() 函数(我知道实现这一目标的唯一方法)是邪恶的......你知道:“不要使用它们”,“这是糟糕的编码”等。
为此,我从未听说过更安全的替代方案,所以我的问题是:
有没有?
在具有密码保护的文档根目录的专用 Web 服务器中运行该应用程序还不够吗?
嗯,这是我的疑问。
我正在使用 Apache 和 PHP 在 CentOS6 服务器上进行开发。当我对 PHP 文件进行更改(并保存)时,似乎 apache 没有读取更改后的文件 - 它仍在处理我的旧 .php 文件。5-10 分钟后,它将开始使用新文件。
有人能告诉我如何强制 Apache 立即获取更改的 .php 文件吗?
更新:我将文件移到 apache 服务器上,但问题仍然存在(这不是 NFS 问题)。因此,似乎 Apache 只是在几分钟内没有读取更改后的文件 困惑...
我收到了来自 Google 的电子邮件,说我的网站被黑了。这是电子邮件。
尊敬的 domain.com 网站所有者或网站管理员(我也收到了这封电子邮件,用于我的其他域),我们最近发现您网站上的某些页面看起来可能是网络钓鱼攻击,其中鼓励用户放弃登录等敏感信息凭证或银行信息。我们已从 Google.com 搜索结果中删除了可疑网址,并开始向在某些从 Google 接收反网络钓鱼数据的浏览器中访问这些网址的用户显示警告页面。
因此,我检查了 Web 文件夹,发现在其中包含许多文件夹的新文件夹中。

我已经全部删除了。还有什么我应该做的吗?网站是 Magento、Wordpress 和 HTML 网站。服务器是带有 Plesk 12 的 CentOS。
我写了这个docker-compose 项目。该泊坞窗,compose.yml如下所示:
version: '3.1'
services:
db:
image: mysql
restart: always
environment:
- MYSQL_DATABASE=mgsv
- MYSQL_USER=mgsv_user
- MYSQL_PASSWORD=mgsvpass
- MYSQL_ROOT_PASSWORD=mysql123
volumes:
- ./mysql:/docker-entrypoint-initdb.d
www:
build: ./mGSV
restart: always
ports:
- 8080:80
Run Code Online (Sandbox Code Playgroud)
该index.php文件 看起来是这样的:
<?php
echo "Hello World!";
//mysqli_connect("localhost","my_user","my_password","my_db");
$con = mysqli_connect("localhost","mgsv_user","mgsvpass","mgsv");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else {
echo "done";
}
?>
Run Code Online (Sandbox Code Playgroud)
而Dockerfile基于一个 PHP 容器,看起来像这样。
FROM php:5-apache
RUN apt-get update && apt-get install …Run Code Online (Sandbox Code Playgroud) 我想在我的服务器上为我的朋友提供一个独立的网络托管空间。我做了:
useradd friend
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend
mkdir /sftp/friend/home
mkdir /sftp/friend/www
usermod -aG sftpusers friend
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend
Run Code Online (Sandbox Code Playgroud)
我将此添加到sshd_config:
Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u
Run Code Online (Sandbox Code Playgroud)
这对 Apache 配置:
<VirtualHost *:80>
ServerName friend.example.com
DocumentRoot /sftp/friend/www
<Directory />
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
它有效:friend可以在 jailroot 环境中访问 SFTP 并且他不能/sftp/friend从 SFTP退出。这很好。
但我注意到他仍然可以使用 PHP 查看文件系统中的其他文件:如果他创建了一个index.php包含:
<?php …Run Code Online (Sandbox Code Playgroud) 使用不同用户(每个项目一个用户)设置 Apache 虚拟主机和 PHP-FPM 池的正确方法是什么?
\nwww-data,无法访问池化项目?我有一个将 Apache 与虚拟主机一起使用的设置,并且我想为每个虚拟主机设置自己的php-fpm池:
site1.conf:<VirtualHost *:443>\n DocumentRoot /var/www/site1/public\n\n <Directory /var/www/site1/public>\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n </Directory>\n\n <FilesMatch \\.php$>\n # 2.4.10+ can proxy to unix socket\n SetHandler "proxy:unix:/run/php/php-fpm.site1.sock|fcgi://localhost/"\n </FilesMatch>\n\n</VirtualHost>\n\nRun Code Online (Sandbox Code Playgroud)\nsite1:[site1]\nuser = site1\ngroup = site1\nlisten.owner = site1\nlisten.group = www-data\nlisten.mode = 0660\n\nRun Code Online (Sandbox Code Playgroud)\n/var/www/site1: …所以我有一个运行 PHP 7.2.34 服务的 docker 容器,如下所示:-
docker-compose.yml
version: '3'
services:
#PHP Service
app:
build:
context: .
dockerfile: Dockerfile
image: digitalocean.com/php
container_name: app
...
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM php:7.2-fpm
...
Run Code Online (Sandbox Code Playgroud)
我没有重新启动 Nginx,而是简单地重新启动容器,例如:-
docker stop app db webserver
docker rm app db webserver
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
我想升级到 PHP 7.4+ 甚至 8。我尝试简单地替换FROM php:7.2-fpm为FROM php:7.4-fpm但phpinfo()报告 PHP 版本没有变化?是否:image: digitalocean.com/php升级时有什么意义吗?