For the original question (repeating my comment):
As others have pointed out, that value needs to be a string: "/usr/bin/php"
. You need to manually type the quotes because add-dir-local-variable
has no idea what type of value is required/valid for any given variable, so string values need to be made explicit. (Despite looking like a file path, the value you'd actually entered was a symbol rather than a string.)
For the revised/new question:
((nil . ((pony-settings (make-pony-project ...
is the same as:
((nil . ((pony-settings . ((make-pony-project ...
So you're setting pony-settings
to ((make-pony-project ...))
And it sounds like that form is then evaluated like so:
((make-pony-project ...))
Hence:
eval: Invalid function: (make-pony-project ...)
Because while make-pony-project
may be the name of a function, the form (make-pony-project ...)
is not the name of a function.
So in summary, I suspect you're missing a dot. You probably wanted Try:
((nil . ((pony-settings . (make-pony-project ...
See also the "Notation" heading at https://www.emacswiki.org/emacs/DirectoryVariables#toc1