Arduino-Yun Wifi - Internet Commands?

Try explicitly giving the full path to curl. Inside runCurl(), change the p.begin() call to:

p.begin("/usr/bin/curl");

The command shell will normally search for the right executable on the path, but here you are not using a command shell and calling the file directly. It may be that it can't find the executable file.

If you had used p.runShellCommand(), then it would launch a command shell, which would then search for the file, and execute it. Instead, you are using p.run(), which does not launch a command shell. Since we already know the location of the curl command on the system, and don't need the command processor's help, there is no need to add the extra overhead of runShellCommand() - I think run() is the proper choice in this case.

If that doesn't work, put in a loop that echos the output from the command. It's probably returning an error string that might give a good clue to the problem:

 while (p.available()>0)
 {
   char c = p.read();
   Serial.print(c);
 }

Of course, you will need to call Serial.begin() in setup().

In looking at your code, you are calling runCurl(), any time that the button is high. Done this way, runCurl() will likely get called multiple times when the button is pressed, and will keep getting called over and over again as long as the button is pressed. It doesn't matter if you turn on the LED thousands of times while the button is pressed, but you probably don't want to be inundated with countless notifications for each press.

Take a look at the Debounce Example and try to understand what it is doing. You will almost certainly need to do something similar. You will want to call runCurl() where the example code is toggling the LED state.