私はLinuxインスタンス上にphpでWebソケットを設定しようとしています。どちらのファイルも私の/ var/www/htmlディレクトリにあります。最初のものはChat.php
と呼ばれ、次のコードが含まれます:PHPクラスファイルが存在していても見つからない
<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class Chat implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
}
public function onMessage(ConnectionInterface $from, $msg) {
}
public function onClose(ConnectionInterface $conn) {
}
public function onError(ConnectionInterface $conn, \Exception $e) {
}
}
?>
chat-server.php
と呼ばれ、このコードが含まれている第二の:
<?php
use Ratchet\Server\IoServer;
use MyApp\Chat;
require dirname(__DIR__) . '/html/vendor/autoload.php';
$server = IoServer::factory(
new Chat(),
8084
);
$server->run();
?>
私は、次のエラーメッセージが表示されますchat-server.php
を実行しよう:
PHP Fatal error: Class 'MyApp\Chat' not found in /var/www/html/chat-server.php on line 8
01を開始しようとすると、はクラスが見つからないためです。何故なの?
が"psr-4": {"MyApp\\": "/"}
これは新しいを定義します
このクラスは 'chat-server.php'にはないので、' Chat.php'にあります。 'Chat.php'を' chat-server.php'に含めてクラス定義を認識できるようにする必要があります。 –
それは 'MyApp \ Chat;を使用しているのではないですか? –
いいえ、インスタンス化するときに 'MyApp \ Chat'の絶対名の代わりにクラスを' Chat'として参照できるようにしています。 'include" Chat.php ";'のようなものが必要です。 –