Я использую Mac OS X и использую Launchd для автоматического запуска XAMPP. Я установил, что пользователь apache настроен так же, как имя моей учетной записи в httpd.conf
User cwd Group nogroup
Что ж, если я просто позволю компьютеру загрузиться, и если я выполню скрипт php с этими командами, вот что я получу:
echo exec('whoami'); //cwd exec('echo 1234 | pbcopy'); echo exec('pbpaste'); // (nothing)
Однако, если я остановлю XAMPP и перезапущу его (используя элемент управления XAMPP), он будет работать, как и ожидалось, и результат третьей строки будет 1234.
echo exec('pbpaste'); // 1234
У меня также есть подобный опыт запуска других системных команд с exec
или shell_exec
таких как ssh
. Кажется, они не работают, пока я не перезапущу apache вручную. У кого-нибудь есть мысли по этому поводу?
Вот мой конфигурационный файл запуска:
/Library/LaunchDaemons/xampp.sql.startapache.plist
<?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>EnableTransactions</key> <true/> <key>Label</key> <string>xampp.startapache.mysql</string> <key>ProgramArguments</key> <array> <string>/Applications/XAMPP/xamppfiles/xampp</string> <string>startmysql</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Applications/XAMPP/xamppfiles</string> <key>KeepAlive</key> <false/> <key>AbandonProcessGroup</key> <true/> </dict> </plist>