laravel / valet

A more enjoyable local development experience for Mac.
https://laravel.com/docs/valet
MIT License
2.51k stars 696 forks source link

Nginx is not starting up #1351

Closed aerrata closed 1 year ago

aerrata commented 1 year ago

Description:

I'm doing a fresh install on my M1 Mac, unfortunately after running valet install, nginx is not starting up.

Running less /opt/homebrew/var/log/nginx/error.log, returns:

2023/01/26 19:38:40 [emerg] 18481#0: unexpected end of parameter, expecting ";" in command line

Steps To Reproduce:

  1. Install Homebrew
  2. brew install php
  3. brew install composer
  4. composer global require laravel/valet
  5. valet install

The output

Stopping nginx...
Installing nginx configuration...
Installing nginx directory...
Installing and configuring phpfpm...
Updating PHP configuration for php@8.2...
Restarting php...
Updating Dnsmasq configuration...
Restarting dnsmasq...
Valet is configured to serve for TLD [.test]
Restarting nginx...

Valet installed successfully!

Diagnosis

sw_vers
ProductName:       macOS
ProductVersion:     13.2
BuildVersion:       22D49
valet --version
Laravel Valet 3.3.0
cat ~/.config/valet/config.json
{
    "tld": "test",
    "loopback": "127.0.0.1",
    "paths": [
        "/Users/foo/Sites"
    ]
}
cat ~/.composer/composer.json
{
    "require": {
        "laravel/valet": "^3.3",
        "laravel/installer": "^4.2"
    }
}
composer global diagnose
Changed current directory to /Users/foo/.composer
Checking composer.json: WARNING
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
Checking platform settings: OK
Checking git settings: OK git version 2.37.1
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version: OK
Composer version: 2.5.1
PHP version: 8.2.1
PHP binary path: /opt/homebrew/Cellar/php/8.2.1_1/bin/php
OpenSSL version: OpenSSL 1.1.1s  1 Nov 2022
cURL version: 7.87.0 libz 1.2.11 ssl (SecureTransport) OpenSSL/1.1.1s
zip: extension present, unzip present, 7-Zip not available
composer global outdated
Changed current directory to /Users/foo/.composer
Info from https://repo.packagist.org: #StandWithUkraine
Legend:
! patch or minor release available - update recommended
~ major release available - update possible

Direct dependencies required in composer.json:
Everything up to date

Transitive dependencies not required in composer.json:
tightenco/collect v8.83.27 ~ v9.47.0 Collect - Illuminate Collections as a s...
ls -al /etc/sudoers.d/
total 16
drwxr-xr-x   4 root  wheel   128 Jan 26 10:49 .
drwxr-xr-x  80 root  wheel  2560 Jan 26 19:07 ..
-rw-r--r--   1 root  wheel    83 Jan 26 10:49 brew
-rw-r--r--   1 root  wheel    86 Jan 26 10:49 valet
brew config
HOMEBREW_VERSION: 3.6.20
ORIGIN: https://github.com/Homebrew/brew
HEAD: 344d32bf7f40183359592ef81ca6486e0587981b
Last commit: 7 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 1d968739de1ce43d98e62a11896720c0d40c105c
Core tap last commit: 3 hours ago
Core tap branch: master
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 2.6.10 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 14.0.0 build 1400
Git: 2.37.1 => /Library/Developer/CommandLineTools/usr/bin/git
Curl: 7.86.0 => /usr/bin/curl
macOS: 13.2-arm64
CLT: 14.2.0.0.1.1668646533
Xcode: N/A
Rosetta 2: false
brew services list
Name    Status User File
dnsmasq none            root 
nginx   none            root 
php     none            root
brew list --formula --versions | grep -E "(php|nginx|dnsmasq|mariadb|mysql|mailhog|openssl)(@\d\..*)?\s"
dnsmasq 2.88
nginx 1.23.3.reinstall 1.23.3
openssl@1.1 1.1.1s
php 8.2.1_1
brew outdated

brew tap
homebrew/cask
homebrew/core
homebrew/services
nicoverbruggen/cask
php -v
PHP 8.2.1 (cli) (built: Jan 12 2023 03:48:24) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.1, Copyright (c), by Zend Technologies
which -a php
/opt/homebrew/bin/php
php --ini
Configuration File (php.ini) Path: /opt/homebrew/etc/php/8.2
Loaded Configuration File:         /opt/homebrew/etc/php/8.2/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/8.2/conf.d
Additional .ini files parsed:      /opt/homebrew/etc/php/8.2/conf.d/error_log.ini,
/opt/homebrew/etc/php/8.2/conf.d/ext-opcache.ini,
/opt/homebrew/etc/php/8.2/conf.d/php-memory-limits.ini
nginx -v
nginx version: nginx/1.23.3
curl --version
curl 7.86.0 (x86_64-apple-darwin22.0) libcurl/7.86.0 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.11 nghttp2/1.47.0
Release-Date: 2022-10-26
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets
php --ri curl
curl

cURL support => enabled
cURL Information => 7.87.0
Age => 10
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => No
HTTPS_PROXY => Yes
MULTI_SSL => Yes
BROTLI => Yes
ALTSVC => Yes
HTTP3 => No
UNICODE => No
ZSTD => Yes
HSTS => Yes
GSASL => No
Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtmpe, rtmps, rtmpt, rtmpte, rtmpts, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => aarch64-apple-darwin22.1.0
SSL Version => (SecureTransport) OpenSSL/1.1.1s
ZLib Version => 1.2.11
libSSH Version => libssh2/1.10.0

Directive => Local Value => Master Value
curl.cainfo => no value => no value
~/.composer/vendor/laravel/valet/bin/ngrok version
sudo: unable to execute /Users/foo/.composer/vendor/laravel/valet/bin/ngrok: Bad CPU type in executable
ls -al ~/.ngrok2
ls: /Users/foo/.ngrok2: No such file or directory
brew info nginx
==> nginx: stable 1.23.3 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
/opt/homebrew/Cellar/nginx/1.23.3 (26 files, 2.2MB) *
  Poured from bottle on 2023-01-26 at 19:37:05
/opt/homebrew/Cellar/nginx/1.23.3.reinstall (23 files, 2.2MB)
  Built from source
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/nginx.rb
License: BSD-2-Clause
==> Dependencies
Required: openssl@1.1, pcre2
==> Options
--HEAD
    Install HEAD version
==> Caveats
Docroot is: /opt/homebrew/var/www

The default port has been set in /opt/homebrew/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /opt/homebrew/etc/nginx/servers/.

To restart nginx after an upgrade:
  brew services restart nginx
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/nginx/bin/nginx -g 'daemon off;'
==> Analytics
install: 42,227 (30 days), 121,545 (90 days), 471,668 (365 days)
install-on-request: 42,163 (30 days), 121,399 (90 days), 470,870 (365 days)
build-error: 6 (30 days)
brew info php
==> php: stable 8.2.1 (bottled), HEAD
General-purpose scripting language
https://www.php.net/
/opt/homebrew/Cellar/php/8.2.1_1 (519 files, 83.3MB) *
  Poured from bottle on 2023-01-26 at 10:22:08
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/php.rb
License: PHP-3.01
==> Dependencies
Build: httpd, pkg-config
Required: apr, apr-util, argon2, aspell, autoconf, curl, freetds, gd, gettext, gmp, icu4c, krb5, libpq, libsodium, libzip, oniguruma, openldap, openssl@1.1, pcre2, sqlite, tidy-html5, unixodbc
==> Options
--HEAD
    Install HEAD version
==> Caveats
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

    
        SetHandler application/x-httpd-php
    

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /opt/homebrew/etc/php/8.2/

To restart php after an upgrade:
  brew services restart php
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/php/sbin/php-fpm --nodaemonize
==> Analytics
install: 150,179 (30 days), 416,096 (90 days), 1,504,842 (365 days)
install-on-request: 133,597 (30 days), 367,946 (90 days), 1,297,607 (365 days)
build-error: 211 (30 days)
brew info openssl
==> openssl@3: stable 3.0.7 (bottled) [keg-only]
Cryptography and SSL/TLS Toolkit
https://openssl.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openssl@3.rb
License: Apache-2.0
==> Dependencies
Required: ca-certificates
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /opt/homebrew/etc/openssl@3/certs

and run
  /opt/homebrew/opt/openssl@3/bin/c_rehash

openssl@3 is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides LibreSSL.

==> Analytics
install: 266,727 (30 days), 698,319 (90 days), 2,044,267 (365 days)
install-on-request: 82,910 (30 days), 312,489 (90 days), 1,317,297 (365 days)
build-error: 219 (30 days)
openssl version -a
LibreSSL 3.3.6
built on: date not available
platform: information not available
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: information not available
OPENSSLDIR: "/private/etc/ssl"
openssl ciphers
AEAD-CHACHA20-POLY1305-SHA256:AEAD-AES256-GCM-SHA384:AEAD-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:GOST2012256-GOST89-GOST89:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-CAMELLIA256-SHA:GOST2001-GOST89-GOST89:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA256:CAMELLIA256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-CAMELLIA128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:CAMELLIA128-SHA256:CAMELLIA128-SHA:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:RC4-SHA:RC4-MD5:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA
sudo nginx -t
nginx: the configuration file /opt/homebrew/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /opt/homebrew/etc/nginx/nginx.conf test is successful
which -a php-fpm
/opt/homebrew/sbin/php-fpm
/opt/homebrew/opt/php/sbin/php-fpm -v
PHP 8.2.1 (fpm-fcgi) (built: Jan 12 2023 03:48:27)
Copyright (c) The PHP Group
Zend Engine v4.2.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.1, Copyright (c), by Zend Technologies
sudo /opt/homebrew/opt/php/sbin/php-fpm -y /opt/homebrew/etc/php/8.2/php-fpm.conf --test
[26-Jan-2023 19:48:34] NOTICE: configuration file /opt/homebrew/etc/php/8.2/php-fpm.conf test is successful
ls -al ~/Library/LaunchAgents | grep homebrew

ls -al /Library/LaunchAgents | grep homebrew

ls -al /Library/LaunchDaemons | grep homebrew
-rw-r--r--   1 root  admin   797 Jan 26 19:38 homebrew.mxcl.dnsmasq.plist
-rw-r--r--   1 root  admin   695 Jan 26 19:38 homebrew.mxcl.nginx.plist
-rw-r--r--   1 root  admin   781 Jan 26 19:38 homebrew.mxcl.php.plist
ls -al /Library/LaunchDaemons | grep "com.laravel.valet."

ls -aln /etc/resolv.conf
lrwxr-xr-x  1 0  0  22 Jan 14 08:57 /etc/resolv.conf -> ../var/run/resolv.conf
cat /etc/resolv.conf
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
nameserver 2402:1980:314:fa2e::d2
nameserver 192.168.72.250
ifconfig lo0
lo0: flags=8049 mtu 16384
    options=1203
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201
sh -c 'echo "------\n/opt/homebrew/etc/nginx/valet/valet.conf\n---\n"; cat /opt/homebrew/etc/nginx/valet/valet.conf | grep -n "# valet loopback"; echo "\n------\n"'
------
/opt/homebrew/etc/nginx/valet/valet.conf
---

3:    #listen VALET_LOOPBACK:80; # valet loopback

------
sh -c 'for file in ~/.config/valet/dnsmasq.d/*; do echo "------\n~/.config/valet/dnsmasq.d/$(basename $file)\n---\n"; cat $file; echo "\n------\n"; done'
------
~/.config/valet/dnsmasq.d/tld-test.conf
---

address=/.test/127.0.0.1
listen-address=127.0.0.1

------
sh -c 'for file in ~/.config/valet/nginx/*; do echo "------\n~/.config/valet/nginx/$(basename $file)\n---\n"; cat $file | grep -n "# valet loopback"; echo "\n------\n"; done'
------
~/.config/valet/nginx/*
---

cat: /Users/foo/.config/valet/nginx/*: No such file or directory

------
aerrata commented 1 year ago

When I cat /Library/LaunchDaemons/homebrew.mxcl.nginx.plist, the "daemon off;" string seems strange.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>homebrew.mxcl.nginx</string>
        <key>LimitLoadToSessionType</key>
        <array>
                <string>Aqua</string>
                <string>Background</string>
                <string>LoginWindow</string>
                <string>StandardIO</string>
                <string>System</string>
        </array>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/homebrew/opt/nginx/bin/nginx</string>
                <string>-g</string>
                <string>&#39;daemon off;&#39;</string>        <------- :\
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/opt/homebrew</string>
</dict>
</plist>

https://github.com/laravel/valet/issues/1110 seems similar to this issue, but it's already 1 year old now. Any ideas?

Thanks.

YeftaAW commented 1 year ago

I thought it was only me. I was just resolved it by reinstalling all stuff. But, still there are some issues left, like certificate (.crt) is missing and php isolate not working anymore.

bjrnblm commented 1 year ago

I have the same problem, might it be connected to this PR in homebrew?

https://github.com/Homebrew/homebrew-core/pull/121021

It seems to change some of the code discussed in the old ticket: https://github.com/laravel/valet/issues/1110

YeftaAW commented 1 year ago

I have the same problem, might it be connected to this PR in homebrew?

Homebrew/homebrew-core#121021

It seems to change some of the quotes discusses in the old ticket: #1110

It didn't work for me though. The only way just let valet do the rest installation. But, do clean install.

bjrnblm commented 1 year ago

Reinstalling didn't work for me unfortunately:

valet uninstall
valet install
valet uninstall --force
valet install

I also tried modifying the .plist files in:

~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
/opt/homebrew/Cellar/nginx/1.23.3/homebrew.mxcl.nginx.plist

From

<string>&#39;daemon off;&#39;</string>

To

<string>daemon off;</string>

But keep on getting:

brew services list
nginx   error  256 root  ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

And

cat /opt/homebrew/var/log/nginx/error.log
2023/01/26 14:04:46 [emerg] 45882#0: unexpected end of parameter, expecting ";" in command line
aerrata commented 1 year ago

I already do factory reset 3 times today 😅, but to no avail.

This is most likely the issue https://github.com/Homebrew/homebrew-core/pull/121021/files

I commented on their commit issue, waiting for response.

YeftaAW commented 1 year ago

Dont forget to remove all valet config files within ~/.config/valet

And then remove valet from global composer as well.

dylanBcp commented 1 year ago

Same error after doing fresh install today on Intel Mac 13.2, nginx error.log showing :

[emerg] 63287#0: unexpected end of parameter, expecting ";" in command line
joshdonnell commented 1 year ago

A workout to get Nginx running for me has been to run sudo nginx in terminal for some reason that then allows nginx to work for me with Valet.

I still get the error in Brew services however it lets me still get my work done. Seems like a core Homebrew issue.

dylanBcp commented 1 year ago

A workout to get Nginx running for me has been to run sudo nginx in terminal for some reason that then allows nginx to work for me with Valet.

I still get the error in Brew services however it lets me still get my work done. Seems like a core Homebrew issue.

It only works for non-secure links. But it will do the job while waiting for a patch 👍

xartuu commented 1 year ago

I have fixed this error at my place. I don't want to duplicate, but I've provided a link to a comment where I pointed out what I did and now I no longer have this problem.

https://github.com/Homebrew/homebrew-core/pull/121021#issuecomment-1405330022

DevWael commented 1 year ago

I'm facing the same issue, to be able to continue my work, I run in the terminal sudo nginx on every system restart.

DevWael commented 1 year ago

@xartuu this fixed the problem. Hopefully they can have a release that contains a fix for this.

dylanBcp commented 1 year ago

I have fixed this error at my place. I don't want to duplicate, but I've provided a link to a comment where I pointed out what I did and now I no longer have this problem.

Homebrew/homebrew-core#121021 (comment)

Perfect, thanks @xartuu, now it works with the secure links with your temporary fix 👍

aerrata commented 1 year ago

Referring to this PR https://github.com/Homebrew/homebrew-core/pull/121639.

I can confirm that this issue has been fixed, nginx starts normally now.

Consider running brew update && brew reinstall nginx. Thanks 👍🏻