php-fpm不会创建.sock文件

时间:2016-02-12 16:33:59

标签: php centos php-7

我在Amazon Linux上运行了AWS服务器。

我使用本指南安装php7(页面底部):https://forums.aws.amazon.com/thread.jspa?messageID=695576

我想使用nginx而不是Apache,所以我还安装了php70w-fpm和nginx软件包。但是,当我service start php-fpm时,它不会在我的服务器上的任何位置创建php-fpm.sock文件。我已经检入/ var / run并且还运行了find / -name "*.sock",它只返回/var/run/rpcbind.sock

8 个答案:

答案 0 :(得分:3)

编辑:这里的真正解决方案是nginx配置中的www.conffastcgi_pass中的监听必须匹配。您是否使用套接字或tcp取决于您。

答案是根本不使用.sock文件。

<{1}}中的

/etc/php-fpm.d/www.conf

所以在我的nginx配置中我放了

listen = 127.0.0.1:9000

而不是使用像

这样的东西
fastcgi_pass 127.0.0.1:9000;

答案 1 :(得分:1)

我知道为时已晚,但可能会有所帮助。您可以使用Python从头开始创建新的锁定文件。

let pictures = [];
let urls =[];
let titles=[];
let nextpage ='';
let pageback='';

class App extends Component {

    constructor(props) {
        super(props);

        this.state = {
            picturesArr: [],
            urlArr: [],
            titleArr:[],
            nextPage:'',
            prevuisPage:''
        };

        this.loadSubreddit = this.loadSubreddit.bind(this);
    }

    loadSubreddit(subre) {

        reddit.hot(subre).limit(5).fetch(function(res) {
            console.log(res);
            nextpage = res.data.after.toString();
            // pageback = res.data.before.valueOf();

            for (let i = 0; i < res.data.children.length; i++){
                pictures.push(res.data.children[i].data.url);
                urls.push(res.data.children[i].data.permalink);
                titles.push(res.data.children[i].data.title);
            }
        });

        this.setState({
            picturesArr: pictures,
            urlArr: urls,
            titleArr: titles,
            nextPage: nextpage,
            prevuisPage: pageback
        }, () => {
            console.log(this.state)
        });

        console.log(pictures);
        console.log(JSON.stringify(pictures));
    }


    componentWillMount() {
        console.log('comp is mounting');
        this.loadSubreddit('cats');
    }

    render() {
        return (
            <div className="App">
            <div className="App-header">
              <img src={logo} className="App-logo" alt="logo" />
              <h2>Welcome to React</h2>
            </div>
                <Col sm={8} md={10} smOffset={2} mdOffset={1} >
                    <ImageList pics={this.state.picturesArr} />
                </Col>
            </div>
        );
    }
}

export default App;

答案 2 :(得分:1)

就我而言,我错过了/etc/php/7.0/fpm/pool.d/wordpress.conf中正确的部分

[wordpress]
listen = /var/run/php7-fpm-wordpress.sock

*。sock文件不是从文件名而是从节名创建的。

答案 3 :(得分:1)

我遇到了同样的问题-没有创建套接字-和Phil拥有相同的解决方案。

我刚刚复制粘贴了一个池文件,并且只在侦听部分更改了套接字名称。没有插座。

这是因为池名称已被使用。如果您已经具有相同名称的池,则不会创建新的套接字。

因此,对于每个套接字都有唯一的池名称很重要。

因此,在复制/粘贴池配置时:更改池名称和套接字名称!

答案 4 :(得分:0)

如果你的php-fpm由systemd控制,你必须在你的php-fpm服务单元文件中检查PrivateTmp选项(你可以这样的文件find /etc/systemd -name "php-fpm*" ! -type d

如果此选项设置为true PrivateTmp=true,则将为php-fpm主进程创建新的文件系统命名空间,并且其他进程将无法在默认情况下操作此命名空间中的文件(例如,nginx)。您可以在此处阅读有关systemd PrivateTmp选项的更多详细信息:https://www.freedesktop.org/software/systemd/man/systemd.exec.html

希望这有帮助!

答案 5 :(得分:0)

  1. 确保具有以下文件夹并且该文件夹可写。 /var/run/php-fpm

  2. 然后在您的www.conf中输入: listen = /var/run/php-fpm/php-fpm.sock

  3. 然后运行: sudo service php-fpm restart

  4. 然后更新您的nginx.conffastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  5. 最后重启nginx: sudo service nginx restart

答案 6 :(得分:0)

我遇到了错误,因为我复制粘贴了一个pool.d / xx.conf,而新的名字具有相同的名字(无论如何),所以第二个没有被加载。 没有错误,没有套接字。

希望能帮助到某人:)

答案 7 :(得分:0)

在我的情况下,当在 Ispconfig 3.2.2 中将特定网站的 PHP 版本示例更改为 PHP7.4 时,应该在 /etc/php/7.4/fpm/pool.d/ 中创建 webxx.conf 文件,但它是在根目录 {{1} 中创建的}}。

所以现在我只是将 webxx.conf 文件 mv 到 / 并重新启动 PHP7.4-fpm /etc/php/7.4/fpm/pool.d/ 并且它可以正常工作。