标签: php

如何为发件人地址配置真实域名

我尝试使用 phpmail()函数发送电子邮件,但不知何故失败,抱怨需要真实域名。在邮件日志中观察到以下内容:

sendmail 4984 r25984:from=apache,size=273,class=0,nrcpts=1,msgid=<201.r25@localhost.localdomain>,relay=apache@localhost
sendmail 4985 r25985:规则集=check_mail,arg1=,relay= mydomain.com [127.0.0.1], reject=553 5.5.4 ... 发件人地址需要真实域名
sendmail 4984 r25984: to=external@server.com, ctladdr=apache (48/48), delay=00: 00:01,xdelay=00:00:00,mailer=relay,pri=30273,relay=[127.0.0.1] [127.0.0.1],dsn=5.6.0,stat=数据格式错误
sendmail 4984 r25984:r259 DSN:数据格式错误

每当 logrotate 出现问题时,cron 都能够向 external@server.com 发送电子邮件。我不确定为什么 php 无法这样做。我尝试使用以下内容更改 `sendmail.mc 中的默认配置:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有任何影响。php 邮件功能中的地址标题已经设置好了。我还确保httpd_can_sendmail启用了 SELinux 。我还需要做什么才能使邮件送达?

linux php configuration sendmail

11
推荐指数
1
解决办法
6万
查看次数

Nginx + PHP-FPM 产生 502 bad gateway 而不是致命错误?

我目前正在使用 Nginx 和 PHP-FPM 测试 Symfony2。我也使用 Xdebug。

Symfony2 带有一个 Demo 包,我想通过在 Acme/Demo 包中创建一个语法错误来测试 Symfony 2.2.0 附带的致命错误的新处理。为什么我这样做,服务器响应是 502 bad gateway。

但是如果我在文件 app_dev.php 中出现语法错误(所以在框架被触发之前),那么 Xdebug 会告诉我致命错误。

令人惊讶的是,如果我修复了那个错字,然后在 Acme/Demo 包中重新创建语法错误,那么 Symfony 错误处理程序就会按预期出现。最后,如果修复所有错别字(页面有效),然后再次重新创建相同的错字(再次在 Acme/Bundle 中),我会得到一个错误的网关。

你有什么线索吗?

php nginx php-fpm xdebug symfony

11
推荐指数
1
解决办法
5312
查看次数

为什么有这么多 gettimeofday 调用?

为什么 PHP/Apache 组合会执行如此多的gettimeofday系统调用?即使很快,每个电话都是应该考虑的电话。

只是一个快速strace -c -p [apache2 process id],给出以下内容:

Process 22294 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.52    0.010000          51       196           poll
  1.48    0.000150           0     20752           gettimeofday
  0.00    0.000000           0        94         7 read
  0.00    0.000000           0        48           write
  0.00    0.000000           0        96        32 open
  0.00    0.000000           0        75           close
  0.00    0.000000           0         6           chdir
  0.00    0.000000           0       766           time
  0.00    0.000000           0         2           chmod
  0.00    0.000000           0        56 …
Run Code Online (Sandbox Code Playgroud)

php apache-2.2

11
推荐指数
1
解决办法
8843
查看次数

如何找出安装/发送电子邮件的邮件程序?

我试图找出在我的服务器上发送电子邮件的电子邮件程序(如果有)。我的雇主有几台服务器,其中大部分使用sendmail,但在我们的两台服务器上,我没有找到电子邮件程序,但不知何故电子邮件已发送?我不希望只安装sendmail如果事情是已经建立,我只是不确定如何找出什么是安装程序。服务器是Ubuntu Server 12.04 LTS,我使用的是PHPmail()命令。

我能找到的唯一信息来尝试回答我的问题是思南的问题:如何找出正在发送电子邮件的程序。我在那里尝试了两个答案,但一无所获。

which mail什么都不做,/var/log/mail.log完全是空的。

我尝试使用strace ./mail-testing-strace.php查看执行此文件时发生的情况,但我一直收到“权限被拒绝”,如下所示:

execve("./mail-testing-strace.php", ["./mail-testing-strace.php"], [/* 19 vars */]) = -1 EACCES (Permission denied)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77ca000
_llseek(3, 0, 0xbfa1ae34, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n", 32strace: exec: Permission denied
) = …
Run Code Online (Sandbox Code Playgroud)

email linux php ubuntu-12.04

11
推荐指数
1
解决办法
5万
查看次数

php-fpm 向 nginx 返回空响应

nginx 正在通过 fastcgi 连接到 php-fpm,使用/etc/nginx/fastcgi_params位置块中的标准。

当从命令行连接到 /.status (php-fpm.ini::ping.path) 时cgi-fcgi -bind,结果按预期返回(X-Powered-By 设置、响应正文等)。

当使用 nginx 请求时,结果返回空(X-Powered-By 设置,没有正文长度或内容)。nginx 返回 200,因为它得到了“有效”响应。

监视 tcpdump,我在它们的 FCGI 标头中隔离了对奇偶校验的请求(减去仍由 shell 设置的用户相关环境变量。)

php nginx fastcgi php-fpm

11
推荐指数
2
解决办法
1万
查看次数

PHP 配置找不到 LDAP 头库

我安装了 LDAP 开发标头:

apt-get install libldb-dev

这添加了一些 ldap 标头:

root@crunchbang:/usr/include# ls -la ldap*
-rw-r--r-- 1 root root  9466 Apr 23  2013 ldap_cdefs.h
-rw-r--r-- 1 root root  1814 Apr 23  2013 ldap_features.h
-rw-r--r-- 1 root root 65213 Apr 23  2013 ldap.h
-rw-r--r-- 1 root root  9450 Apr 23  2013 ldap_schema.h
-rw-r--r-- 1 root root  3468 Apr 23  2013 ldap_utf8.h
Run Code Online (Sandbox Code Playgroud)

当我配置和引用目录时:

./configure --with-ldap=/usr/include

我收到此错误:

...
checking for LDAP support... yes
checking for LDAP Cyrus SASL support... no
checking size of long int... …
Run Code Online (Sandbox Code Playgroud)

linux php ldap

11
推荐指数
3
解决办法
3万
查看次数

Docker - 分别扩展 nginx 和 php-fpm

我一直在玩 docker 和 docker-compose 并有一个问题。

目前我的 docker-compose.yml 看起来像这样:

app:
    image: myname/php-app
    volumes:
        - /var/www
    environment:
        <SYMFONY_ENVIRONMENT>: dev

web:
    image: myname/nginx
    ports:
        - 80
    links:
        - app
    volumes_from:
        - app
Run Code Online (Sandbox Code Playgroud)

应用程序包含端口 9000 上的 php-fpm 和我的应用程序代码。Web 是带有一些配置的 nginx。

这如何发挥我所期望的功能,但是为了将 nginx 连接到 php-fpm 我有这一行:

fastcgi_pass    app:9000;
Run Code Online (Sandbox Code Playgroud)

我怎样才能有效地扩展它?例如,如果我想要运行一个 nginx 容器但运行三个应用程序容器,那么我肯定会有三个 php-fpm 实例都试图侦听端口 9000。

如何在不同的端口上拥有每个 php-fpm 实例,但仍然知道它们在任何给定时间在我的 nginx 配置中的位置?

我采取了错误的方法吗?

谢谢!

php nginx php-fpm docker

11
推荐指数
1
解决办法
2万
查看次数

使 RHSCL PHP 全球可用的最佳方式

我已经使用以下网址安装了 RHSCL 2:

https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html

使用 RedHat 订阅管理器。

然后我跑了yum remove php*跟着yum install rh-php56

一切都很顺利,除了现在在任何地方都找不到 PHP。然后我运行find / -name phprh-php56在以下目录中找到:

/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/root/usr/bin/php
/opt/rh/rh-php56/root/usr/lib64/php
/opt/rh/rh-php56/root/usr/share/php
Run Code Online (Sandbox Code Playgroud)

将这些二进制文件放入/usr/bin通常对所有用户全局可用的任何其他目录中的最佳方法是什么?

安装软件包时我是否错过了一个步骤,这就是为什么它在全球范围内不可用?或者这只是使用 RHSCL 时发生的情况?

我已经测试了这些文件夹中的二进制文件,它们在我运行php -v时可以正常工作,因此工作正常。

我的第一个想法是cp进入/bin或者/usr/bin但也许有一种官方的方式来做我的要求?

编辑

无法评论,没有代表...来自我发布的链接的第 3 章,它说软件集合包必须像这样运行:

scl enable rh-php56 'php -v'

哪个有效......但是我如何让它在$ php -v没有额外命令的情况下为所有用户运行。我需要全局可用的 php 二进制文件,以便网络服务器可以使用它,并且 ssh 用户可以使用普通 shell。

php installation redhat php56

11
推荐指数
1
解决办法
1万
查看次数

如何在 arch linux 上为 php (cli) 和 php-fpm 创建单独的配置文件

是否可以为 php (cli) 和 php-fpm 创建单独的 php.ini 文件,就像在 debian 和 ubuntu 上可以使用两个文件夹/etc/php/7.0/cli/etc/php/7.0/fpm?

如果我可以conf.d为每个子系统加载带有目录的独立模块,我也会很酷。

有谁知道我如何单独配置它?

我也尝试使用在 ubuntu 16.04 中配置的结构,但没有成功。

php php.ini arch-linux php-fpm

11
推荐指数
1
解决办法
5316
查看次数

ppa:ondrej/php 存储库安全吗?

我安装了 php 的 ppa:ondrej/php 存储库并执行了 apt-get 升级。我几乎不知道它安装了很多我不知道的库包,所以我想知道它们留在系统上是否安全?

php repository

11
推荐指数
2
解决办法
2万
查看次数