curl возвращает 400 плохих запросов без кавычек

curl -v 'something.com:12684/CAB/keyfile?r=ORE_0&t=VOD&p=1' 

возвращает 200, но используя

 curl -v something.com:12684/CAB/keyfile?r=ORE_0&t=VOD&p=1 

возвращает 400. Почему эти цитаты имеют значение?

У вашего URL есть символы, которые ваша оболочка распознает как специальные. Скорее всего, & , которое является сигналом для UNIX-ish-оболочек, чтобы поместить команду в фоновом режиме. Таким образом, вы эффективно выполняете три команды:

 curl -v something.com:12684/CAB/keyfile=?r=ORE_0 t=VOD p=1 

Вы не видите вывод ошибки оболочки, потому что последние два являются действительными конструкциями оболочки.

Всегда указывайте свои аргументы. Если в PHP используется escapeshellarg . Лучше, используйте встроенную curl или стороннюю библиотеку, такую ​​как Guzzle .